如何在Yahoo与Gmail中设置邮件发件人?Python代码发件人显示调整
解决Yahoo/Gmail中Python邮件发件人显示指定邮箱的问题
嘿,我来帮你搞定这个问题!你现在的代码里msg['From']只填了显示名称,这就是收件箱里看不到指定邮箱地址的核心原因。邮件协议里的From字段需要同时包含显示名称和实际发件邮箱,格式是 "显示名称 <实际邮箱地址>" —— 这个写法是标准规范,Yahoo和Gmail都会正确解析显示。
第一步:修正msg['From']的格式
直接把你代码里的msg['From']改成下面这样就行:
msg['From'] = "Unirises Updates! <no-reply@unirises.test>"
这样收件人在邮箱里看到的发件人就是Unirises Updates!,当他们hover查看详情或者点击发件人时,就会显示对应的邮箱地址no-reply@unirises.test。
第二步:配置对应邮箱的SMTP服务器
光改邮件头还不够,你后面的SMTP发送代码必须用你指定的这个no-reply@unirises.test邮箱来认证发送,不然Yahoo或Gmail会直接拦截,或者显示错误的发件人信息。下面分别给你Gmail和Yahoo的SMTP配置示例:
Gmail SMTP配置
现在Gmail要求用应用专用密码(如果你开了两步验证的话),不推荐开启“允许不太安全的应用”。配置代码如下:
import smtplib # Gmail SMTP参数 smtp_server = 'smtp.gmail.com' smtp_port = 587 # TLS加密端口 sender_email = 'no-reply@unirises.test' sender_password = '你的Gmail应用专用密码' # 不是你的常规登录密码! # 发送邮件的逻辑 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() # 启用TLS加密 server.login(sender_email, sender_password) server.sendmail(sender_email, client_mail, msg.as_string())
Yahoo SMTP配置
Yahoo需要先在账户设置里开启POP/SMTP权限,然后用你的Yahoo邮箱密码或者应用专用密码(取决于你的账户安全设置):
import smtplib # Yahoo SMTP参数 smtp_server = 'smtp.mail.yahoo.com' smtp_port = 587 # TLS加密端口 sender_email = 'no-reply@unirises.test' sender_password = '你的Yahoo应用专用密码或登录密码' # 发送邮件的逻辑 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() server.login(sender_email, sender_password) server.sendmail(sender_email, client_mail, msg.as_string())
几个重要提醒
- 一定要确保你的发件邮箱已经开启了SMTP服务,Gmail在“账户设置-安全性”里找,Yahoo在“账户信息-邮件选项”里配置。
- 不要用和SMTP认证邮箱不一样的
msg['From']地址,不然邮件大概率会被当成垃圾邮件或者直接拒收,Yahoo和Gmail对发件人身份校验很严格。 - 如果你的
no-reply@unirises.test是自定义域名邮箱,记得给域名配置正确的SPF和DKIM记录,这能大幅提升邮件的送达率,避免被标记为垃圾邮件。
内容的提问来源于stack exchange,提问作者code killer
相关产品推荐
相关产品推荐

