在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服务器的地址和端口可能有所不同,需要根据实际情况进行设置。同时,也可以根据具体需求,对邮件的内容和附件进行更多的配置和处理。
