You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:41:22