簡體   English   中英

send_mail 僅適用於 django 的終端

[英]send_mail only works in terminal in django

我試圖讓我的網站在按下按鈕時發送 email 。 但是,當我在 shell 中使用 send_mail 時,它只發送 email 並且在按下按鈕時什么也不做。

我目前在我的 settings.py 中有以下內容

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST_USER = '#'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_PASSWORD = '#'

# 當然只針對這個問題

在我的 html 文件中,我有

 <form method="post">
  {% csrf_token %}
  <button type="submit" name="place_order" class="btn btn-success">
   Place Order</button>
 </form>

place_order 與我的 views.py 鏈接,它檢查按鈕是否被點擊

 checkout = request.POST.get('place_order')
        if checkout:
            send_mail('Django test mail', 'this is django test body', 
            '#', ['#'], fail_silently=False,)
            messages.info(request, f'Your order has been placed!') 

名為place_order的發布請求中沒有任何值,因為它是一個button ,而不是input ,因此 if 語句為false並且send_mail不會被觸發:

 checkout = request.POST.get('place_order')
        if checkout: # <=== here
            send_mail('Django test mail', 'this is django test body', 
            '#', ['#'], fail_silently=False,)
            messages.info(request, f'Your order has been placed!') 

因此,如果您將HTML更改為:

<form method="post">
  {% csrf_token %}
  <input type="hidden" name="place_order" value="blablabla"/> # value shouldn't be empty
  <button type="submit" class="btn btn-success">
   Place Order</button>
 </form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM