win32 发送邮件,内容为图片
时间: 2024-03-15 14:47:45 浏览: 17
要发送含有图片的电子邮件,你需要以下步骤:
1. 使用Python的PIL库(Python Imaging Library)加载图片并将其转换为base64编码格式的字符串。
2. 利用MIME模块创建一个Multipart邮件对象。
3. 将图片添加到Multipart邮件对象中。
4. 使用SMTP库连接到SMTP服务器并发送邮件。
以下是一个示例代码,可以将一张图片作为附件发送到指定的电子邮件地址:
```python
import os
import base64
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE
from email import encoders
from PIL import Image
# 邮件发送方
FROM = 'your_email_address'
PASSWORD = 'your_email_password'
# 邮件接收方
TO = ['email_address_1', 'email_address_2']
# SMTP服务器地址和端口号
SMTP_SERVER = 'smtp.your_email_provider.com'
SMTP_PORT = 587
# 加载图片并将其转换为base64编码格式的字符串
img_path = 'path_to_your_image_file'
with open(img_path, 'rb') as f:
img_data = f.read()
img_base64 = base64.b64encode(img_data).decode('utf-8')
# 创建Multipart邮件对象
msg = MIMEMultipart()
# 添加邮件正文
text = MIMEText('This is an image email.')
msg.attach(text)
# 添加图片附件
image = MIMEBase('image', 'jpeg', filename=os.path.basename(img_path))
image.set_payload(img_data)
encoders.encode_base64(image)
image.add_header('Content-Disposition', 'attachment', filename=os.path.basename(img_path))
msg.attach(image)
# 设置邮件主题、发送者和接收者
msg['Subject'] = 'Image email'
msg['From'] = FROM
msg['To'] = COMMASPACE.join(TO)
# 连接到SMTP服务器并发送邮件
try:
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.ehlo()
server.starttls()
server.login(FROM, PASSWORD)
server.sendmail(FROM, TO, msg.as_string())
server.close()
print('Email sent successfully!')
except Exception as e:
print('Something went wrong...', e)
```
注意,这个示例代码中只包含了一张图片的处理方式。如果你想发送多张图片,可以将上面的代码封装成一个函数,并使用循环添加多个图片。