2012-06-05 246 views
0

我使用ASP经典CDO与CreateMHTMLBody方法发送电子邮件。我的电子邮件中有几张图片,其中一些图片是静态的,不会更改,但其中一些会根据电子邮件内容进行更改。一些像iCloud这样的邮件软件将图片显示为附件,尽管我将它们全部用全路径URL地址。我已经使用AddRelatedBodyPart,但是现在他们会将图片展示在您必须呈现的位置,但它们仍然会以附件形式显示图片。我希望只显示在电子邮件正文中的图片不在附件中。有谁知道如何解决这一问题?这里是我的代码示例:ASP嵌入图像CDO.Message电子邮件

Set myMail=CreateObject("CDO.Message") 
myMail.Subject= "Subject of Email" 
myMail.From= "[email protected]" 
myMail.To= "[email protected]" 
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 

在此先感谢您的时间和帮助。

回答

0

为了使电子邮件中的图像,您必须使用正文中的内嵌IMG标记具有图像(http:// ...)的全限定路径。不要把它们当作附件。

+0

我已经使用了像这样的完整路径,但仍然获得附件而不是电子邮件正文。在Gmail中一切都是正确的,但在雅虎,它显示在电子邮件和附加图像的身体,但在iCloud它只显示在附件! – Jay

+0

您在SRC中缺少http://并且您不需要附加* ANY *图像,邮件客户端会自动在Web上找到它们。 –

+0

我知道。我知道我不需要在我的电子邮件中附加任何图像。那是我的问题。我不附加任何图像,但仍然像雅虎或iCloud邮件客户端视为附件。我忘了在上面的示例中添加“http://”。我的图片在其src中有“http://”。我不知道,可能是因为我使用CreateMHTMLBody方法。任何想法? – Jay

0

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

另外CreateMHTMLBody在ASP代码中使用并不是好东西,因为它使用WinINET Http堆栈来获取资源,WinINET不应该从ASP代码中使用。

你真正需要的是使用类似的WinHTTP来获取HTML资源,然后分配到消息的HTMLBody财产。

0

我知道这个问题是旧的,但也许你(或其他人)仍然在寻找答案:

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

这应当引起大多数邮件客户端不渲染图像作为附件。

0
true; 

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

response.write strImagePath ' try 

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

虽然这个代码片断可以解决的问题,[包括说明](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高您的文章质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – dpr

相关问题