2017-07-15 31 views
0

我在Heroku的生產環境中遇到了send_mail函數的問題。Django:send_mail不能正常工作[僅限於生產]

我的settings.py對於本地和生產是相同的,當我在本地主機上測試時,Gmail正確地發送了電子郵件,但由於某種原因,我得到了500服務器錯誤,我甚至沒有收到錯誤我的管理員電子郵件中的日誌來自django(可能出於同樣的原因)。

我已經做到了這一點,真的很奇怪,這種情況正在發生。同樣的gmail已經爲本地開發做了這個,所以我認爲問題不在那裏。

我使用Python3.6,Django1.11和Heroku。

這裏是我的代碼:

settings.py

EMAIL_HOST = 'smtp.gmail.com' 
from .passwords import EMAIL_HOST_USER 
from .passwords import EMAIL_HOST_PASSWORD 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 
SERVER_EMAIL = EMAIL_HOST_USER 

from .passwords import ADMINS 
MANAGERS = ADMINS 

views.py

from django.conf import settings 
from django.core.mail import send_mail 
from django.http import HttpResponseRedirect 
from django.shortcuts import render 

from .forms import LandingPageMapasForm 
def mapas(request): 
    form = LandingPageMapasForm(request.POST or None) 
    context = { 
     "form": form, 
    } 
    if form.is_valid(): 
     obj = form.save(commit=False) 
     # obj.user = self.request.user 
     obj.save() 

     form_empresa = form.cleaned_data.get('empresa') 


     subject = '%s - Solicitação de Orçamento' %(form_empresa) 
     contact_message = 'message' 
     context = {} 
     from_email = '[email protected]' 
     to_email = ['[email protected]'] 

     send_mail(
      subject, 
      contact_message, 
      from_email, 
      to_email, 
      fail_silently = False, 
     ) 

     return HttpResponseRedirect('http://geoeng.com.br/muito-obrigado/') 

    return render(request, 'mapas.html', context) 
+0

我不知道原因,但同樣的事情發生在我身上Django的send_mail生產卡住有這個問題,但最終離開它,並使用smtplib –

+0

我在生產上打開調試=真看到錯誤,我得到了'SMTPAuthenticationError' 我現在明白了這個問題。當我從本地環境發送時,Gmail將其視爲來自我的計算機,這沒關係。但是當我在製作中使用它時,它來自弗吉尼亞州的阿什伯恩,EUA和Gmail並不接受,即使當我說這是我時,但我從來沒有與其他帳戶發生過類似的問題。 不知道現在如何解決這個問題... –

回答

0

好了,原來它無關,與我的代碼。 Gmail並不滿意我的帳戶從Ashburn,VA,EUA(據Heroku認爲是這樣)訪問。所以我必須對我的配置進行一些調整,最後我更改了一個新的(更安全的)密碼,並且一切都開始正常工作。

簡而言之:

問題與Gmail

變更密碼,然後開始工作