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

SMTP发送邮件时如何将发件人显示为指定名称而非邮箱地址?

解决Python SMTP发件人显示自定义名称的问题

你遇到的问题是因为邮件头的From字段格式不正确,同时sendmail方法的参数不符合SMTP服务器要求,以下是修复方案:

核心修改点

  • 规范From字段格式:需要写成 显示名称 <实际邮箱地址> 的格式,收件人客户端才能正确解析并显示自定义名称。
  • sendmail发件人参数用真实邮箱:SMTP服务器需要验证发件人身份,必须传入你登录的真实邮箱地址,不能只传显示名称。

修改后的完整代码

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import sys

message = MIMEMultipart()

# 改为显示名称+邮箱的标准格式
message["From"] = "GORKIDEV <gorkemkayas435@gmail.com>"
message["To"] = "gorkemkayas@hotmail.com"
message["Subject"] = "About mail sending"

my_message = "Sending mail via SMTP module with Python"
text_message = MIMEText(my_message,"plain")
message.attach(text_message)

try:
    mail = smtplib.SMTP("smtp.gmail.com",587)
    mail.ehlo()
    mail.starttls()
    # Gmail需开启两步验证后使用应用专用密码登录
    mail.login("gorkemkayas435@gmail.com","*********")
    
    # sendmail第一个参数传入真实登录邮箱
    mail.sendmail("gorkemkayas435@gmail.com", message["To"], message.as_string())
    
    print("Message is sent successfully !")
    mail.close()

except Exception as e:
    # 增加异常信息便于调试
    sys.stderr.write(f"An error occured: {str(e)}")
    sys.stderr.flush()

补充说明

  • 若使用Gmail,必须先开启两步验证,并使用应用专用密码登录,否则会被谷歌的安全机制拦截。
  • 邮件头的From字段负责给收件人展示名称,而sendmail的发件人参数是给SMTP服务器做身份验证用的,二者作用不同,不能混淆。

内容的提问来源于stack exchange,提问作者gorkemkayas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:36:26