欢迎访问宙启技术站
智能推送

在Python中如何通过SMTP发送带有附件的电子邮件

发布时间:2024-01-16 04:07:33

在Python中,可以使用smtplib库来发送电子邮件,并使用email库来创建邮件对象,包括带有附件的邮件。下面是一个发送带有附件的电子邮件的例子:

首先,需要导入smtplib、email库和MIME模块:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email import encoders

接下来,需要设置SMTP服务器的连接信息,并登录SMTP服务器:

smtp_servers = {
    '163': ('smtp.163.com', 25),
    'qq': ('smtp.qq.com', 25),
    'gmail': ('smtp.gmail.com', 587)
}

email_provider = 'qq'  # 设置使用的邮箱服务提供商
smtp_server, smtp_port = smtp_servers[email_provider]

username = 'your_email@example.com'  # 发件人邮箱
password = 'your_password'  # 发件人邮箱密码

# 连接SMTP服务器
smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.starttls()  # 使用TLS加密连接
smtp_obj.login(username, password)  # 登录SMTP服务器

接下来,需要创建一个MIMEMultipart对象,并将邮件的内容、附件等添加到MIMEMultipart对象中:

from_addr = 'your_email@example.com'  # 发件人邮箱
to_addr = 'recipient@example.com'  # 收件人邮箱

# 创建MIMEMultipart对象
msg = MIMEMultipart()

msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = '测试邮件'  # 邮件主题

# 邮件内容
body = '这是一封测试邮件,请查收。'
msg.attach(MIMEText(body, 'plain'))

# 添加附件
attachment_path = 'path_to_attachment.jpg'  # 附件路径

# 读取附件内容
attachment_file = open(attachment_path, 'rb')
attachment_data = attachment_file.read()
attachment_file.close()

# 创建附件对象
attachment = MIMEBase('application', 'octet-stream')
attachment.set_payload(attachment_data)
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment', filename='attachment.jpg')

msg.attach(attachment)

最后,使用SMTP对象发送邮件:

# 发送邮件
smtp_obj.sendmail(from_addr, to_addr, msg.as_string())

# 关闭SMTP连接
smtp_obj.quit()

这样就可以使用Python发送带有附件的电子邮件了。根据不同的邮箱服务提供商,SMTP服务器的地址和端口可能有所不同,需要根据实际情况进行设置。同时,也可以根据具体需求,对邮件的内容和附件进行更多的配置和处理。