我在與連接超時了同樣的問題。在我看來,默認的Django SMTP庫中的SSL套接字存在問題。在Django的開發版本中,有一個選項可以設置EMAIL_USE_SSL = True
,它允許使用隱含的 TLS連接(與顯式相反,其由EMAIL_USE_TLS = True
指定)。通常,前者(隱式)使用端口465,而後者(顯式)使用端口587.請參閱Django docs - 將開發版本與版本1.5進行比較。請注意,選項EMAIL_USE_SSL
不在1.5中。
因此,問題是Zoho's default SMTP server uses port 465 and requires SSL,但EMAIL_USE_TLS
選項不符合此要求。 (注意:也許嘗試將此選項設置爲False
?我沒有嘗試過)。無論如何,我最好的猜測是這是一個Django特定的問題,直到1.7才能解決。
至於你的問題的解決方案:你可以肯定地訪問Zoho的SMTP服務器與Python(2.7.1)的smtplib
(見下面的腳本)。所以,如果你想要一個稍微不雅的修復,你可以走這條路。我已經在Django 1.5.1中測試了它,它的功能就像一個魅力。
這裏的獨立Python腳本(這可以在Django項目進行調整使用):
import smtplib
from email.mime.text import MIMEText
# Define to/from
sender = '[email protected]'
recipient = '[email protected]'
# Create message
msg = MIMEText("Message text")
msg['Subject'] = "Sent from python"
msg['From'] = sender
msg['To'] = recipient
# Create server object with SSL option
server = smtplib.SMTP_SSL('smtp.zoho.com', 465)
# Perform operations via server
server.login('[email protected]', 'password')
server.sendmail(sender, [recipient], msg.as_string())
server.quit()
嘗試檢查上面的腳本插入到您的Web項目之前,你的Zoho的憑據運行。祝你好運!
這種方法對我有用:)如何發送郵件中的html內容 – ZenOut
工程就像一個魅力。另外:如果你想發送電子郵件給不止一個人,改變兩行:'msg ['To'] ='[email protected]; u2 @ ex.com''和'server.sendmail(sender,[' [email protected]','[email protected]'],msg.as_string())' –
@ZenOut你將不得不使用Multipart電子郵件..見https://docs.python.org/2/library/ email-examples.html#id5 – Coderaemon