我有一台有两个域名的机器,分别是a.com和b.com。
当我使用 postfix 从类似地址发送某些内容时[电子邮件保护],它将其替换为[电子邮件保护]每次都是这样。我的 main.cf 文件仅指定了 a.com,所以我不知道 b.com 来自哪里。
以下是相关部分邮件日志...第一行是消息的开始,然后第六行是[电子邮件保护]神秘地出现。
mymachine sendmail[28543]: qA3NGbOR028543: [email protected], size=792, class=0, nrcpts=1, msgid=<[email protected]>, relay=apache@localhost
mymachine postfix/smtpd[28546]: connect from b.com[127.0.0.1]
mymachine postfix/smtpd[28546]: 912F9758031: client=b.com[127.0.0.1]
mymachine postfix/cleanup[28549]: 912F9758031: message-id=<[email protected]>
mymachine sendmail[28543]: qA3NGbOR028543: [email protected], delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30792, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 912F9758031)
mymachine postfix/qmgr[28527]: 912F9758031: from=<[email protected]>, size=1130, nrcpt=1 (queue active)
我不确定我如何调用它是否相关,但它来自一些 PHP mail(),并且我确保传递了 -f 标志。如果任何更多信息可能有帮助,我很乐意提供它!
答案1
下列的
http://mail.python.org/pipermail/mailman-developers/2001-March/008476.html
我发现卸载 sendmail、安装 postfix 并使用 Python 脚本发送邮件更简单。这是我用来发送邮件的 Python 3 代码(需要国际化,因此使用 UTF-8 编码)。
import email.message, email.mime.text, smtplib, sys
from email.utils import parseaddr, formataddr
from email.header import Header
from email.charset import Charset
def format_address(name, email):
if not name:
return email
name = Charset('iso-8859-1').header_encode(name)
return formataddr((name, email))
def send_unicode_email(mFrom, mTo, mSubject, mBody):
sender_name, sender_addr = parseaddr(mFrom)
recipient_name, recipient_addr = parseaddr(mTo)
composed = email.mime.text.MIMEText(mBody.encode('UTF-8'), _charset='UTF-8')
composed['from'] = format_address(sender_name, sender_addr)
composed['to'] = format_address(recipient_name, recipient_addr)
composed['subject'] = Header(mSubject, 'UTF-8')
srv = smtplib.SMTP('localhost')
srv.send_message(composed)
srv.quit()