Django发送电子邮件

4
在PHP中,我只需调用mail()即可发送电子邮件。在Django中,我需要指定SMTP后端和其他内容。

有没有更简单的方法从Django发送电子邮件?


4
你之所以不需要在PHP中指定SMTP设置,是因为在设置网络服务器时,其他人已经替你完成了这项工作。所有的电子邮件都是通过SMTP发送的。唯一的问题是哪个SMTP服务器会接受来自你的客户端的连接,并且你的客户端如何向服务器进行身份验证。你的本地系统管理员应该能够在10秒钟内提供这些信息。(好吧,也许需要20秒钟。) - Peter Rowell
好的,我在php.ini文件中找到了信息,但现在发送电子邮件非常慢。 - Valentin Golev
你是如何衡量它非常慢的? - Pydev UA
我提交表单后等待10-15秒直到页面加载。 - Valentin Golev
3个回答

3
django.core.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)

邮件是使用 EMAIL_HOST 和 EMAIL_PORT 设置中指定的 SMTP 主机和端口发送的。 - Valentin Golev
1
你需要指定谁将发送你的电子邮件 - 即使是 PHP,也需要配置某个位置的某种 SMTP 服务器以发送电子邮件。 - Andrew Hare
好的,我在php.ini中找到了信息,但现在发送电子邮件非常慢。 - Valentin Golev

2
在PHP中,您只能在非Windows系统上使用简单的mail()命令发送邮件。这些系统将期望安装并正确配置类似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 ("我 <myself@mydomain.com>", "收件人 <other@hisdomain.com>", "主题", "邮件正文")


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接