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

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服务器的相关信息。