|
发表于 2023-8-22 11:03:13
|
显示全部楼层
根据腾讯官网的说明,如果昵称包含非ASCII字符(如中文),则需要使用base64对昵称进行编码。下面是一个示例代码,演示如何使用QQ邮箱发送邮件并设置正确的From头部格式:
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
- import base64
- # QQ邮箱配置
- smtp_server = 'smtp.qq.com'
- smtp_port = 465
- sender = 'your_qq_email@qq.com'
- password = 'your_qq_email_password'
- # 收件人邮箱
- receiver = 'recipient@example.com'
- # 编码昵称
- nickname = '谢谢你'
- encoded_nickname = '=?UTF-8?B?' + base64.b64encode(nickname.encode('utf-8')).decode('utf-8') + '?='
- # 构造邮件内容
- message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
- message['From'] = Header(encoded_nickname, 'utf-8')
- message['To'] = Header(receiver, 'utf-8')
- message['Subject'] = Header('测试邮件', 'utf-8')
- # 发送邮件
- try:
- smtpObj = smtplib.SMTP_SSL(smtp_server, smtp_port)
- smtpObj.login(sender, password)
- smtpObj.sendmail(sender, receiver, message.as_string())
- print("邮件发送成功")
- except smtplib.SMTPException as e:
- print("邮件发送失败:" + str(e))
复制代码
在代码中,将昵称"谢谢你"进行了UTF-8编码,并使用base64进行编码。然后,在构造邮件内容时,使用编码后的昵称作为From头部的显示名称。通过这样的方式,就能正确设置包含非ASCII字符的From头部格式。
请将your_qq_email@qq.com和your_qq_email_password替换为您的QQ邮箱地址和密码,将recipient@example.com替换为您的收件人邮箱地址。
如果问题已经解决,请设置最佳答案 |
|