Python编程中利用smtplib库发送带图片的邮件的方法
发布时间:2023-12-25 13:26:32
在Python中,可以使用smtplib库来发送带有图片附件的邮件。smtplib库是Python内置的用于发送邮件的库,可以通过SMTP服务器发送邮件。下面是发送带有图片附件的邮件的方法和示例:
1. 导入smtplib库和email库
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage
2. 创建MIMEMultipart对象,并设置邮件的收件人、发件人、主题等信息
msg = MIMEMultipart() msg['From'] = 'sender@example.com' msg['To'] = 'recipient@example.com' msg['Subject'] = 'Email with Image Attachment'
3. 创建MIMEText对象,并设置邮件正文内容
text = MIMEText('This is the body of the email')
msg.attach(text)
4. 读取图片文件,并创建MIMEImage对象
with open('image.jpg', 'rb') as f:
img = MIMEImage(f.read())
5. 设置图片的Content-ID,并将图片附加到邮件中
img.add_header('Content-ID', '<image1>')
msg.attach(img)
6. 创建SMTP对象,并连接到SMTP服务器
smtp_server = 'smtp.example.com' smtp_port = 587 smtp_username = 'username' smtp_password = 'password' smtp_obj = smtplib.SMTP(smtp_server, smtp_port) smtp_obj.starttls() smtp_obj.login(smtp_username, smtp_password)
7. 发送邮件
smtp_obj.sendmail(msg['From'], msg['To'], msg.as_string()) smtp_obj.quit()
完整示例代码如下:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
msg = MIMEMultipart()
msg['From'] = 'sender@example.com'
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Email with Image Attachment'
text = MIMEText('This is the body of the email')
msg.attach(text)
with open('image.jpg', 'rb') as f:
img = MIMEImage(f.read())
img.add_header('Content-ID', '<image1>')
msg.attach(img)
smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_username = 'username'
smtp_password = 'password'
smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.starttls()
smtp_obj.login(smtp_username, smtp_password)
smtp_obj.sendmail(msg['From'], msg['To'], msg.as_string())
smtp_obj.quit()
注意事项:
- 在实际使用时,需要将邮件的收件人、发件人、SMTP服务器等信息替换为真实值。
- 图片文件需要与Python脚本在同一个目录下,并且文件名需要正确匹配。
- 如果需要发送多个图片附件,可以重复步骤4-5。
- 在发送邮件之前,可能需要去邮箱账号的设置中开启SMTP服务,并获取SMTP服务器的相关信息。
