2009-12-26 241 views
4

在PHP中,我只需撥打mail()即可發送電子郵件。在Django中,我需要指定SMTP後端和其他東西。Django發送電子郵件

有沒有簡單的方法從Django發送電子郵件?

+4

您不必在PHP中指定SMTP設置的唯一原因是因爲其他人在安裝Web服務器時已經爲您完成了這項工作。 *所有電子郵件*都通過SMTP發送。唯一的問題是哪個SMTP服務器會接受來自客戶端的連接,以及客戶端如何向服務器進行身份驗證。您的本地syadmin應該能夠在大約10秒內提供這些信息。 (好吧,也許20秒。) – 2009-12-26 16:38:57

+0

好吧,我在php.ini中找到了信息,但現在發送電子郵件非常緩慢。 – 2009-12-26 16:52:19

+0

你是如何評價它非常慢? – 2009-12-26 21:27:04

回答

3

django.core.mail模塊有幾個很好的郵件發送功能。

對於一個教程,請參閱Sending e-mail

雖然Python的讓發送電子郵件 通過的smtplib 庫相對容易,Django提供了幾個 了它的光包裝。提供這些包裝 可使發送電子郵件 更加快速,以便於在開發過程中測試 電子郵件發送,併爲 無法使用SMTP的平臺提供支持,併爲 提供支持。

,將最有可能滿足你的目的,最簡單的功能是send_mail功能:

send_mail(
    subject, 
    message, 
    from_email, 
    recipient_list, 
    fail_silently=False, 
    auth_user=None, 
    auth_password=None, 
    connection=None) 
+0

「使用EMAIL_HOST和EMAIL_PORT設置中指定的SMTP主機和端口發送郵件。」 ?? – 2009-12-26 15:57:50

+1

那麼您需要指定誰將發送您的電子郵件 - 即使PHP沒有在某個位置配置的用於發送電子郵件的_some_類型的SMTP服務器也不能發送電子郵件。 – 2009-12-26 16:00:43

+0

好吧,我在php.ini中找到了信息,但現在發送電子郵件非常緩慢。 – 2009-12-26 16:53:04

2

在PHP中,你只能對非Windows系統的簡單郵件()命令發送郵件。這些將期望像Postfix這樣的本地MTA被安裝和正確配置,對大多數Web服務器來說應該是這樣。如果你想依靠第三方或分散的郵件服務取決於你的應用程序的重要電子郵件。嚴重依賴快速和可靠的電子郵件傳輸通常會導致通過SMTP將郵件發送到中央郵件服務器(「大管道」)。

不過,如果你想擁有同樣的功能,如PHP,試試這個:

import subprocess 

def send_mail(from_addr, to_addr, subject, body): 
    cmdline = ["/usr/sbin/sendmail", "-f"] 
    cmdline.append(from_addr) 
    cmdline.append(to_addr) 
    mailer = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
    dialog = "From: %s\nTo: %s\nSubject: %s\n\n%s\n.\n" % (from_addr, to_addr, subject, body) 
    return mailer.communicate(dialog) 

而且使用它像: send_mail ("Me <[email protected]>", "Recip Ient <[email protected]>", "Teh' Subject", "Mail body")