python SMTP发送带图片的邮件时,报TypeError: Could not guess image MIME subtype错误的解决办法

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、问题解决:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值