如何以编程方式发送电子邮件并隐藏发件人地址?

时间:2019-02-12 12:13:22

标签: email smtp sendmail smtplib

我想通过python向我的客户发送邮件通知。问题是发件人邮件帐户需要隐藏。请注意-这不是用于网络钓鱼或垃圾邮件的内容,仅供个人使用!

我使用smtplib并在gmail中设置了一个新的“ noreply”帐户,但是即使在为邮件提供别名时,“ mail from:”标头也会包含我的实际邮件。

import smtplib
from email.mime.text import MIMEText
from email.utils import *

email_sender = 'noreply%%@gmail.com'
email_receiver = 'example%%%@gmail.com'

subject = 'Python!'

msg = MIMEText('This is the body of the message.')
msg['To'] = formataddr(('Recipient', 'example%%%@gmail.com'))
msg['From'] = formataddr(('Author', 'author@example.com'))
msg['Subject'] = 'Simple test message'

connection = smtplib.SMTP('smtp.gmail.com', 587)
connection.starttls()
connection.login(email_sender, 'password')
connection.sendmail(msg['From'], email_receiver, msg.as_string())
connection.quit()

我按预期将邮件发送到收件箱,但是单击“更多详细信息”时,将显示原始发件人地址。

1 个答案:

答案 0 :(得分:0)

sendmail的第一个参数是信封发件人,应该只是电子邮件的终点,而不是格式化的地址;因此传入msg['From']有双重错误(一个是因为您不想显示它;另一个是因为您正在传入整个From:标头中的显示名称和全部名称)。