ASP将图像嵌入到CDO.Message电子邮件中

时间:2012-06-05 20:52:55

标签: asp-classic cdo.message cdonts

我正在使用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("\") & "\images\mypic1.jpg"
myMail.AddRelatedBodyPart strImagePath, "my_pic_1", 0

strImagePath = Server.MapPath("\") & "\images\mypic2.jpg"
myMail.AddRelatedBodyPart strImagePath, "my_pic_2", 0

myMail.Send
set myMail=nothing

提前感谢您的时间和帮助。

4 个答案:

答案 0 :(得分:0)

要在电子邮件中添加图片,您必须在邮件的正文中使用内嵌IMG标记,并使用图片的完全限定路径(http://。 ..)。不要将它们视为附件。

答案 1 :(得分:0)

CreateMHTMLBody不是您所需要的。此方法将创建一个获取URL的多部分消息,并对返回的HTML进行后处理。它为它找到的每个img src获取资源,将返回的资源编码为正文部分,并更新HTML img src以指向正文部分。

同样CreateMHTMLBody在ASP代码中使用并不是一件好事,因为它使用WinINET Http堆栈来获取资源,不应该从ASP代码中使用WinINET。

您真正需要的是使用类似WinHTTP的内容来获取HTML资源,然后将其分配给Message的HTMLBody属性。

答案 2 :(得分:0)

我知道这个问题已经过时了,但也许你(或其他人)仍在寻找答案:

myMail.Configuration.Fields("urn:schemas:httpmail:content-disposition-type")="inline"
myMail.Configuration.Fields.Update

这会导致大多数邮件客户端无法将图像呈现为附件。

答案 3 :(得分:0)

true;

 strImagePath = Server.MapPath("\") & "\images\mypic1.jpg"

response.write strImagePath ' try

 myMail.AddRelatedBodyPart strImagePath, "mypic1.jpg", 0