python 邮件正文指定位置插入图片
时间: 2024-07-09 16:01:18 浏览: 98
在Python中,我们可以使用`smtplib`和`email`模块来发送电子邮件,其中插入图片通常涉及到HTML格式的邮件正文。如果你想在邮件正文的特定位置插入图片,你需要创建一个包含HTML代码的字符串,然后设置这个字符串作为邮件的body。
以下是一个基本示例,展示了如何在邮件正文中指定位置插入图片:
```python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.utils import COMMASPACE, formatdate
from email import encoders
# 图片路径
image_path = 'path_to_your_image.jpg'
# 设置邮件参数
msg = MIMEMultipart('related')
msg['From'] = 'your_email@example.com'
msg['To'] = 'recipient_email@example.com'
msg['Subject'] = '测试邮件'
msg['Date'] = formatdate(localtime=True)
# 创建HTML部分
html_content = """
<html>
<body>
<p>这是一段文字</p>
<img src="cid:image1">
<p>这是邮件剩余内容...</p>
</body>
</html>
"""
# 添加图片(使用base64编码)
with open(image_path, 'rb') as img_file:
image_data = img_file.read()
image_type = img_file.content_type
part = MIMEBase('image', 'jpeg') # 或者'image/png', 'image/gif'等
part.set_payload(image_data)
encoders.encode_base64(part) # 编码二进制数据
part.add_header('Content-Disposition', f'attachment; filename="{img_file.name}"')
part.add_header('Content-ID', '<image1>') # 告诉收件人这就是我们要引用的图片ID
msg.attach(part)
# 将HTML设置为邮件主体,并添加到MIMEMultipart
msg.attach(MIMEText(html_content, 'html'))
# 发送邮件
smtp_server = 'smtp.example.com' # 替换为你的SMTP服务器地址
smtp_port = 587 # 可能需要根据你的SMTP服务调整
smtp_username = 'your_email@example.com' # 发送者的邮箱账号
smtp_password = 'your_password' # 发送者的邮箱密码
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # 加密连接
server.login(smtp_username, smtp_password)
text = msg.as_string()
server.sendmail(msg['From'], msg['To'], text)
server.quit()
```
请注意替换上述示例中的`your_email@example.com`、`recipient_email@example.com`、`smtp.example.com`、`smtp_username`和`smtp_password`为你实际的邮箱信息和SMTP服务器配置。
阅读全文