【发布时间】:2014-03-28 20:30:22
【问题描述】:
使用 smtplib 通过 gmail 自动发送的电子邮件,一旦收到。收件人看到电子邮件的发件人是我的电子邮件地址。有什么方法可以将发件人显示为我可以自定义的名称?
【问题讨论】:
使用 smtplib 通过 gmail 自动发送的电子邮件,一旦收到。收件人看到电子邮件的发件人是我的电子邮件地址。有什么方法可以将发件人显示为我可以自定义的名称?
【问题讨论】:
如果有人来找一个更简单的,如果可能不是那么全面,我设法在 yagmail v0.10.212 上非常简单地做到这一点:
yagmail.SMTP({"user@gmail.com": "Alias"}, "pwd").send(mail, subject, body)
我将其设置为只需要电子邮件地址的用户部分,但在为别名添加字典时我必须使用完整地址。
如果您使用的是 .yagmail 文件,那么您也不需要密码参数,这可以提高安全性。或者把它放在钥匙圈上,我就是这么做的。
yagmail.SMTP({"user@gmail.com": "Alias"}).send(mail, subject, body)
【讨论】:
我会使用yagmail 来完成此操作(其目的是让发送电子邮件变得非常简单):
from yagmail import Connect
yag = Connect({'myemail@gmail.com' : 'SecretAliasName'}, 'pass')
yag.send('target@email.com', 'MySubject', 'You will never guess..')
请注意,同样,您也可以为目标设置别名:
yag.send({'target@email.com' : 'Mom'})
你可能必须先pip install yagmail。
【讨论】:
Connect 方法,因为它已被 SMTP 取代。但是,通过使用相同的方法,静默发送邮件会失败......您现在知道如何使用 yagmail 做同样的事情吗?
网络上的大多数示例和教程可能会有点混乱,因为它们使用 SMTP 的用户名作为发件人的名称。下面是我的简单 Python/Gmail SMTP 脚本。在那里你会看到,在我的邮件的“发件人”标题之后,我可以插入任何我想要的字符串,这将显示在收到的电子邮件的发件人行中。
def send_email(sendName, user, pwd, recpient, subject, body):
import smtplib
reciever = recpient if type(recpient) is list else [recpient]
message = "From: " + sendName + "\nTo: " + (", ".join(reciever)) + "\nSubject: " + subject + "\n\n" + body + "\n"
try:
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(user, pwd)
server.sendmail(user, reciever, message)
server.close()
print("Message Send: Success.")
except Exception as e:
print("Message Send: Failure.")
print(e)
send_email(input("Sender Name: "), input("Gmail: "), input("Password: "), input("Recipient: "), input("Subject: "), input("Body: "))
【讨论】: