我正在使用ASP classic和CDO通过CreateMHTMLBody
方法发送电子邮件。我的电子邮件中有几个图像,其中一些是静态的,不会改变,但其中一些会根据电子邮件内容而改变。一些邮件软件(如iCloud)将图片显示为附件,即使我都有完整的路径URL地址。我用过AddRelatedBodyPart
但现在它们在你必须在的地方显示图像,但他们仍然在附件中显示图像。我希望图片只显示在电子邮件正文中,而不是附件中。有人知道如何解决这个问题吗?这是我的代码示例:
Set myMail=CreateObject("CDO.Message")
myMail.Subject= "Subject of Email"
myMail.From= "from@site.com"
myMail.To= "to@site.com"
myMail.CreateMHTMLBody "http://www.mysite.com/email.html"
strImagePath = Server.MapPath("") & "imagesmypic1.jpg"
myMail.AddRelatedBodyPart strImagePath, "my_pic_1", 0
strImagePath = Server.MapPath("") & "imagesmypic2.jpg"
myMail.AddRelatedBodyPart strImagePath, "my_pic_2", 0
myMail.Send
set myMail=nothing
提前感谢您的时间和帮助。
电子邮件中包含图像,您必须在邮件正文中使用内联IMG
标签,其中包含图像的完全限定路径(http://...)。不要将它们视为附件。
CreateMHTMLBody
不是你需要的。 此方法将创建一个多部分消息,用于获取 URL 并对返回的 HTML 进行后处理。 它为找到的每个 img src 获取资源,将返回的资源编码为正文部分,并更新 HTML img src 以指向正文部分。
此外,CreateMHTMLBody
在ASP代码中使用并不是一件好事,因为它使用WinINET Http堆栈来获取资源,因此不应从ASP代码中使用WinINET。
您真正需要的是使用 WinHTTP 之类的东西来获取 HTML 资源,然后将其分配给消息的 HTMLBody
属性。
这个问题很老,但也许你(或其他人)仍在寻找答案:
myMail.Configuration.Fields("urn:schemas:httpmail:content-disposition-type")="inline"
myMail.Configuration.Fields.Update
这应该会导致大多数邮件客户端不将图像呈现为附件。
true;
strImagePath = Server.MapPath("") & "imagesmypic1.jpg"
response.write strImagePath ' try
myMail.AddRelatedBodyPart strImagePath, "mypic1.jpg", 0