其他选项
当您在PHP中使用邮件功能时,它使用的是您所在主机的本地sendmail,而这又只是一个本地的SMTP中继,当然本地发送邮件并不是真正的建议,因为由于DKIM、SPF和其他保护机制,这些邮件可能没有很好的传递率。如果你关心可交付性,我建议使用
a)用于发送邮件的外部SMTP服务器,该服务器已为发送域正确配置。
b)API,如AWS SES、Mailgun或同等产品。
如果您不关心可传递性,那么您当然可以使用来自Python的本地SendMail,SendMail与任何其他SMTP服务器一样监听端口25上的环回地址(127.0.0.1),因此您可以使用smtplib通过SendMail发送,而无需使用外部SMTP服务器。
通过本地SMTP发送电子邮件
如果有本地SMTP服务器(如SendMail),请检查它是否按预期侦听。。。
netstat -tuna
您应该看到它正在监听端口25上的环回地址。
如果它在监听,那么您应该能够在Python中执行类似的操作来发送电子邮件。import smtplib
sender = 'no_reply@mydomain.com'
receivers = ['person@otherdomain.com']
message = """From: No Reply
To: Person
Subject: Test Email
This is a test e-mail message.
"""
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print("Successfully sent email")
except SMTPException:
print("Error: unable to send email")