标签导航:

python邮件发送:如何正确设置发件人姓名和邮箱地址避免显示奇怪信息?

Python邮件发送:精准设置发件人信息

在使用Python发送邮件时,准确设置发件人姓名和邮箱地址至关重要,这直接影响邮件的显示效果。本文将指导您如何在Python代码中正确设置发件人信息,避免出现冗余信息或奇怪的显示效果。

问题:直接使用姓名作为From字段的值(例如:msg['from'] = "xyz abc"),会导致邮件客户端显示包含主机名等额外信息的冗余发件人信息,而非预期的“xyz abc”。

原因: 这是因为未明确指定电子邮件地址,邮件服务器无法正确解析发件人信息。

解决方案: 使用以下格式设置msg['From']:

"Your Name ail@example.com>"

其中,“Your Name” 为您希望显示的发件人姓名,“your_email@example.com” 为您的电子邮件地址。此格式确保邮件客户端正确解析姓名和邮箱地址。

代码示例:

以下代码演示了如何正确设置发件人信息:

import smtplib
from email.mime.text import MIMEText

def send_email(to=['example@example.com'],
               f_host='example.example.com',
               f_port=587,
               f_user='your_email@example.com',
               f_passwd='your_password',
               subject='邮件主题',
               message='邮件内容'):
    smtpserver = smtplib.SMTP(f_host, f_port)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo()
    smtpserver.login(f_user, f_passwd)
    msg = MIMEText(message, 'html')
    msg['Subject'] = subject
    msg['From'] = "您的姓名 <your_email@example.com>"  # 正确设置发件人信息
    msg['To'] = ','.join(to)
    for t in to:
        smtpserver.sendmail(f_user, t, msg.as_string())
    smtpserver.close()
    print('邮件发送成功!')

cont = """
<p>您好!<br></br>
  一切顺利吗?<br></br>
  这是您需要的 <a href="https://www.php.cn/link/996d38f817b4ba74e4c38fb1286d28ab">链接</a>。
</p>
"""

try:
    send_email(message=cont)
except Exception as e:
    print(f'邮件发送失败: {e}')

请将代码中的占位符替换为您的实际姓名、邮箱地址和密码。 通过这种方式,收件人将看到您期望的姓名和邮箱地址作为发件人信息。