Django发送电子邮件

时间:2009-12-26 15:50:32

标签: python django email

在PHP中,我只需拨打mail()即可发送电子邮件。在Django中,我需要指定SMTP后端和其他东西。

是否有更简单的方式从Django发送电子邮件?

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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 ("Me <myself@mydomain.com>", "Recip Ient <other@hisdomain.com>", "Teh' Subject", "Mail body")

答案 2 :(得分:0)

无论哪种方式,你需要一些后端(阅读MTA)。在我的头脑中,我可以想到两件事:

  1. 如前所述,您可以使用sendmail http://djangosnippets.org/snippets/1864/
  2. 更好的是,使用Python MTA。有Lamson,一个Python电子邮件服务器(MTA):http://lamsonproject.org/docs/hooking_into_django.html