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

Python邮件附件:使用email.mime.application模块发送带有图片附件的邮件

发布时间:2024-01-02 02:01:57

发送带有图片附件的邮件是常见的邮件操作之一,Python中的email.mime.application模块提供了方便的方法来实现这个功能。

使用email.mime.application模块发送带有图片附件的邮件有以下几个步骤:

1. 导入相关的模块:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import smtplib

2. 创建MIMEMultipart对象,用于存储邮件内容和附件:

msg = MIMEMultipart()

3. 设置邮件的主题、发件人、收件人和正文:

msg['Subject'] = '邮件主题'
msg['From'] = '发件人'
msg['To'] = '收件人'
msg.attach(MIMEText('邮件正文', 'plain'))

4. 创建MIMEApplication对象,用于表示图片附件,可以通过设置文件路径或者文件对象来创建:

image_path = '/path/to/image.jpg'
with open(image_path, 'rb') as f:
    img = MIMEApplication(f.read())

5. 设置图片附件的Content-Disposition头部属性,并将其添加到MIMEMultipart对象中:

img.add_header('Content-Disposition', 'attachment', filename=image_path)
msg.attach(img)

6. 连接SMTP服务器,并发送邮件:

smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_user = 'user@example.com'
smtp_password = 'password'
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(smtp_user, smtp_password)
    server.send_message(msg)

完整的例子如下:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import smtplib

msg = MIMEMultipart()
msg['Subject'] = '邮件主题'
msg['From'] = '发件人'
msg['To'] = '收件人'
msg.attach(MIMEText('邮件正文', 'plain'))

image_path = '/path/to/image.jpg'
with open(image_path, 'rb') as f:
    img = MIMEApplication(f.read())

img.add_header('Content-Disposition', 'attachment', filename=image_path)
msg.attach(img)

smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_user = 'user@example.com'
smtp_password = 'password'
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(smtp_user, smtp_password)
    server.send_message(msg)

上述代码中的变量需要根据实际情况进行修改,包括邮件主题、发件人、收件人、邮件正文、图片附件的路径、SMTP服务器、SMTP端口、SMTP账号和SMTP密码。

需要注意的是,图片附件的文件路径需要正确指定,并确保py文件具有访问图片文件的权限。

以上就是使用email.mime.application模块发送带有图片附件的邮件的示例代码。使用这个模块可以方便地发送各种类型的文件附件。