在使用Python发送邮件时,正确设置发件人姓名和邮箱地址可以避免邮件客户端显示奇怪的信息。通常,邮件客户端会显示发件人的姓名和邮箱地址,如果设置不当,可能会导致显示格式不正确或出现乱码。
以下是如何在Python中正确设置发件人姓名和邮箱地址的示例:
email
和 smtplib
模块import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 邮件内容
msg = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
# 设置发件人姓名和邮箱地址
sender_name = "发件人姓名"
sender_email = "sender@example.com"
msg['From'] = Header(f"{sender_name} <{sender_email}>", 'utf-8')
# 设置收件人邮箱地址
msg['To'] = "recipient@example.com"
# 设置邮件主题
msg['Subject'] = Header('测试邮件', 'utf-8')
# 发送邮件
try:
smtp_obj = smtplib.SMTP('smtp.example.com', 587)
smtp_obj.starttls() # 启用TLS加密
smtp_obj.login("your_username", "your_password")
smtp_obj.sendmail(sender_email, ["recipient@example.com"], msg.as_string())
print("邮件发送成功")
except smtplib.SMTPException as e:
print(f"邮件发送失败: {e}")
finally:
smtp_obj.quit()
msg['From']
设置:
Header
类来设置发件人姓名和邮箱地址,确保编码正确。"发件人姓名 <发件人邮箱>"
,这样可以确保邮件客户端正确显示发件人信息。编码:
utf-8
编码来避免中文或其他非ASCII字符出现乱码。SMTP服务器设置:
starttls()
或 SMTP_SSL
。yagmail
库简化操作如果你希望简化邮件发送过程,可以使用 yagmail
库:
import yagmail
# 设置发件人邮箱和密码
yag = yagmail.SMTP(user="sender@example.com", password="your_password")
# 发送邮件
yag.send(
to="recipient@example.com",
subject="测试邮件",
contents="这是一封测试邮件",
headers={"From": "发件人姓名 <sender@example.com>"}
)
print("邮件发送成功")
通过正确设置发件人姓名和邮箱地址,并确保使用正确的编码,可以避免邮件客户端显示奇怪的信息。使用 email
和 smtplib
模块可以灵活控制邮件内容,而 yagmail
库则提供了更简洁的API来发送邮件。