2017-09-14 146 views
1

我使用一個應用程序與發送電子郵件給用戶進行通知。但在應用setting.py文件包含的Django發送電子郵件混亂

設置文件

EMAIL_USE_TLS = True 

一些容易混淆的術語如 我不知道這是什麼,也

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 

什麼就是在這兩年

的品種,如果主機是d在此

mailUsr = "[email protected]" ???? what's this for ? 

這裏eclared然後

mail.py

def send_mail(title,message,reciver): 
    try: 
     mailS = 'smtp.gmail.com' 
     mailP = 587 
     mailUsr = "[email protected]" 
     mailPass = "********" 

     # Create a text/plain message 
     msg = MIMEMultipart('alternative') 

     msg['Subject'] = title 
     msg['From'] = mailUsr 
     msg['To'] = reciver 

     html="<html><head></head><body><p>"+message.replace("\n","<br>")+"</p></body></html>" 

     part2 = MIMEText(html, 'html') 

     msg.attach(part2) 

     # Send the message via our own SMTP server, but don't include the 
     s = smtplib.SMTP(mailS,mailP) 
     s.ehlo() 
     s.starttls() 
     s.ehlo() 
     s.login(mailUsr,mailPass) 
     s.sendmail(mailUsr, [reciver], msg.as_string()) 
     s.quit() 

    except Exception as e: 
     print(e) 

我是新來這。這讓我感到困惑。 謝謝你。

+0

也許你應該花幾分鐘閱讀相關的電子郵件Django文檔頁面:https://開頭的文檔.djangoproject.com/en/1.11/topics/email/ – Antwane

回答

1

您需要提供一個Gmail帳戶來發送郵件時:

mailUsr = "[email protected]" 
mailPass = "********" 

MailUsr是EMAILID和MailPass是該帳戶的passowrd。

它就像發送郵件使用的是這些EMAILID和密碼登錄到gmail帳戶,然後發送郵件。

所以,如果你想發送,那麼你需要使用你的EMAILID和密碼,它取代。

settings.py

你需要有這些設置。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_HOST = 'smtp.sendgrid.net' 
EMAIL_HOST_USER = 'username' 
EMAIL_HOST_PASSWORD = 'password' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
  • EMAIL_HOST是您使用的是smtp服務。在我的情況下,你的情況gmailsendgrid

  • EMAIL_HOST_USER是您帳戶中smtp服務的用戶名,該帳戶的密碼爲gmailidEMAIL_HOST_PASSWORD

我認爲現在應該清楚你。

希望它可以幫助!

+0

** EMAIL_USE_TLS = True ** –

+0

它是發送安全郵件的端口。 TLS(傳輸層安全協議)。 –

+0

如果你使用'port:25',它不安全。這就像在端口443上訪問「https」和在端口80上訪問「http」 –

0

從設置的值。py文件將在發送郵件時自動使用,如果您使用django郵件發送程序包如EmailMessage()for SendMail link

您正在使用的第二個是本機python軟件包。上,你必須明確提供的用戶名和密碼等配置

遺憾的語言.. :)