Django 发送邮件
在PHP中,我只需要调用 mail()
就可以简单地发送邮件。而在Django中,我需要设置SMTP服务器和其他一些东西。
有没有更简单的方法可以在Django中发送邮件呢?
3 个回答
0
无论如何,你需要一些后端支持(可以理解为邮件传输代理,简称MTA)。我能想到两种选择:
- 正如之前提到的,你可以使用 sendmail,具体可以参考这个链接 http://djangosnippets.org/snippets/1864/
- 更好的选择是使用一个Python的邮件传输代理。比如说,Lamson,这是一个Python邮件服务器(MTA):http://lamsonproject.org/docs/hooking_into_django.html
2
在PHP中,你只能在非Windows系统上用一个简单的mail()命令发送邮件。这种方式需要你本地安装并正确配置一个邮件传输代理(MTA),比如Postfix,这在大多数网络服务器上都是应该有的。如果你的应用程序对邮件的依赖比较大,可能就需要考虑使用第三方或去中心化的邮件服务。对于那些对快速和可靠的邮件传输有很大依赖的情况,通常会通过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>", "主题", "邮件内容")
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)