python发送邮件和附件

发布于:2025-06-04 ⋅ 阅读:(19) ⋅ 点赞:(0)

python发送邮件和附件,亲测运行成功

step1:C:\Users\wangrusheng\PycharmProjects\FastAPIProject1\hello.py
功能包括:
1.使用QQ邮箱的SMTP服务器发送邮件。
2.邮件包含HTML格式的正文内容。
3.添加并发送一个位于用户下载目录下的ZIP附件。
4.处理发件人和收件人的显示名称,使用Header和formataddr来编码中文字符。
5.使用SSL连接,通过授权码登录邮箱并发送。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase  # 新增导入
from email import encoders  # 新增导入
from email.header import Header
from email.utils import formataddr

# 邮箱配置
mail_host = "smtp.qq.com"
mail_port = 465
sender = '249407@qq.com'
license_code = '不是QQ密码,是SMTP授权码,QQ邮箱 → 设置 → 账户 → 开启POP3/SMTP服务->生成授权码(不是QQ密码)'
receivers = ['153694@qq.com']

# 创建邮件对象
message = MIMEMultipart()

# 设置发件人和收件人
message['From'] = formataddr((
    Header('发件人名称', 'utf-8').encode(),
    sender
))
message['To'] = formataddr((
    Header('汪工', 'utf-8').encode(),
    receivers[0]
))
message['Subject'] = Header('Python邮件测试', 'utf-8')

# 添加邮件正文
content = '''
    <p>这wrs_test_002是一封Python发送的测试邮件</p>
    <p>正文内容支持HTML格式</p>
    <p>发送时间:2024-03-20</p>
'''
msg_text = MIMEText(content, 'html', 'utf-8')
message.attach(msg_text)

# 添加附件
file_path = r'C:\Users\wangrusheng\Downloads\age.zip'  # 使用原始字符串避免转义问题
with open(file_path, 'rb') as f:
    attachment = MIMEBase('application', 'octet-stream')
    attachment.set_payload(f.read())
encoders.encode_base64(attachment)  # 对附件进行Base64编码
attachment.add_header('Content-Disposition', 'attachment', filename='age.zip')
message.attach(attachment)

# 发送邮件
try:
    smtpObj = smtplib.SMTP_SSL(mail_host, mail_port)
    smtpObj.login(sender, license_code)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
    smtpObj.quit()
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)

step2:
D:\Users\wangrusheng\PycharmProjects\FastAPIProject1\hello.py

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.utils import formataddr  # 新增导入

# 邮箱配置
mail_host = "smtp.qq.com"
mail_port = 465
sender = '249407@qq.com'
license_code = '不是QQ密码,是SMTP授权码,QQ邮箱 → 设置 → 账户 → 开启POP3/SMTP服务->生成授权码(不是QQ密码)'
receivers = ['153694@qq.com']



# 创建邮件对象
message = MIMEMultipart()

# 修复发件人格式(关键修改)
message['From'] = formataddr((
    Header('发件人名称', 'utf-8').encode(),  # 处理中文名称
    sender  # 真实邮箱地址
))

message['To'] = formataddr((
    Header('汪工', 'utf-8').encode(),  # 处理中文收件人名称
    receivers[0]  # 真实收件邮箱
))

message['Subject'] = Header('Python邮件测试', 'utf-8')

# 邮件正文(保持不变)
content = '''
    <p>这是一封Python发送的测试邮件</p>
    <p>正文内容支持HTML格式</p>
    <p>发送时间:2024-03-20</p>
'''
msg_text = MIMEText(content, 'html', 'utf-8')
message.attach(msg_text)

try:
    smtpObj = smtplib.SMTP_SSL(mail_host, mail_port)
    smtpObj.login(sender, license_code)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
    smtpObj.quit()
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)

end


网站公告

今日签到

点亮在社区的每一天
去签到