首页 > 文章列表 > Python邮件发送:如何正确设置发件人姓名和邮箱地址?

Python邮件发送:如何正确设置发件人姓名和邮箱地址?

294 2025-03-18

Python邮件发送:如何正确设置发件人姓名和邮箱地址?

Python邮件发送:完美呈现发件人姓名与邮箱地址

本文将指导您如何在Python邮件发送中,准确显示发件人姓名和邮箱地址,避免出现主机名等错误信息。 之前的代码尝试使用msg['from'] = "xyz abc"设置发件人信息,结果导致发件人字段显示为奇怪的机器主机名,而非预期的“xyz abc”。

问题在于msg['from']字段的设置方法。仅仅设置姓名是不够的,必须同时包含邮箱地址,并采用特定的格式:“显示名称 <邮箱地址>”。

解决方法是修改msg['from']的赋值语句。将msg['from'] = "xyz abc"替换为msg['from'] = "xyz abc "。这样,收件人就能看到“xyz abc”作为发件人姓名,“sender@sender.com”作为实际发送邮箱地址。

以下是一个修正后的代码示例,演示如何正确设置发件人信息:

import smtplib
from email.mime.text import MIMEText

sender = 'sender@sender.com'

def send_email(content, recipients):
    msg = MIMEText(content, 'html')
    recipients_str = ",".join(recipients)
    msg['Subject'] = '测试邮件'
    msg['From'] = "XYZ ABC " # 正确的设置方法
    msg['To'] = recipients_str
    try:
        with smtplib.SMTP('localhost') as smtp:  # 使用with语句简化代码,确保连接关闭
            smtp.sendmail(sender, recipients, msg.as_string())
            print("邮件发送成功!")
    except smtplib.SMTPException as e:
        print(f"邮件发送失败:{e}")


content = """

您好!

一切顺利吗?

这是您需要的链接

""" send_email(content, ['xyz@xyzcom'])

此修正后的代码通过在msg['from']中添加解决了原始问题,确保邮件的发件人信息正确显示。此外,代码还使用了with语句来简化代码并确保SMTP连接在使用完毕后正确关闭,以及更清晰的异常处理。

来源:1741406054