1、源码如下:
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
# 第三方SMTP服务
mail_host = "smtp.exmail.qq.com"
mail_user = "xxxx@xxx.com"
mail_pass = "xxxx"
# 邮件发送/接受地址
sender = "xxxx@xxx.com"
receivers ="xxxx@xxx.com"
message = MIMEMultipart('related')
message['From'] = Header("发送者", 'utf-8')
message['To'] = Header("接收者", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
msgAlternative = MIMEMultipart('alternative')
message.attach(msgAlternative)
message_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com">这是一个链接</a></p>
<p>图片示例:</p>
<p><img src="cid:img1"></p>
"""
msgAlternative.attach(MIMEText(message_msg, 'html', 'utf-8'))
# 指定图片为当前目录
fp = open('xxxx.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定义图片ID,再HTML文本中引用
msgImage.add_header('Content-ID', '<img1>')
message.attach(msgImage)
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
2、运行后,报TypeError: Could not guess image MIME subtype错误:
3、解决办法:
在指定图片的代码中,添加_subtype参数:
msgImage = MIMEImage(fp.read(), _subtype=False)
4、问题解决: