HTMLbody怎么引用附件图片插入邮件正文

初学VBA,做出一个在报表里自动发邮件的小程序 ,但是最后效果outlook中显示出附件图片而没有图片附件,收件后则是有图片附件,正文中图片全白无法显示,解决如下(注意cid:是要小写的,否则不行):

Dim newMlItem As Outlook.MailItem
    ms = "C:\Users\temp\Desktop\TEMP.BMP"
    FileName = "TEMP.BMP"
    Set newMlItem = Outlook.CreateItem(olMailItem)
    With newMlItem
        .Subject = "FW:"
        .Attachments.add ms
        .HTMLBody = "<p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:""Arial"",sans-serif'><img id=""_TEMP.BMP"" src=""cid:TEMP.BMP""></span>"
        .To = "abc@sina.com"
        .send
        End With
End Sub

在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服务器配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值