2009-12-26 233 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")