代码之家  ›  专栏  ›  技术社区  ›  Valentin Golev

Django发送电子邮件

  •  4
  • Valentin Golev  · 技术社区  · 15 年前

    在PHP中,我可以通过调用 mail() . 在Django中,我需要指定SMTP后端和其他内容。

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

    3 回复  |  直到 14 年前
        1
  •  3
  •   Andrew Hare    15 年前

    django.core.mail

    Sending e-mail

    通过smtplib相对容易 Django图书馆提供了 上面有轻包装纸。这些包装纸 用于发送电子邮件 非常快,便于测试 在开发过程中发送电子邮件,以及 为以下平台提供支持: 不能使用SMTP。

    最简单的功能最适合您的目的是 send_mail 功能:

    send_mail(
        subject, 
        message, 
        from_email, 
        recipient_list, 
        fail_silently=False, 
        auth_user=None, 
        auth_password=None, 
        connection=None)
    
        2
  •  2
  •   Kevin Read    15 年前

    在PHP中,只能在非Windows系统上使用简单的mail()命令发送邮件。这将期望像大多数Web服务器一样安装和正确配置本地MTA类的后缀。如果您想依赖第三方或分散的邮件服务,则取决于电子邮件对您的应用程序的重要性。严重依赖于快速可靠的电子邮件传输,通常会导致通过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")

        3
  •  0
  •   evdama    14 年前

    不管怎样,您都需要一些后端(读MTA)。我能想到两件事:

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