當我嘗試在VBScript中將電子郵件附件添加爲MHTML文件時,ContentMediaType
錯誤地設置爲"message/rfc822"
(RFC 822)。據我所知,根據微軟的說法,這是正確的,但根據RFC 2557的說法是錯誤的,它表明它應該是"multipart/related"
。這是一個問題,因爲大多數(如果不是全部的話)郵件客戶端將"message/rfc822"
解釋爲電子郵件消息。由於文件擴展名".mht"
和".mhtml"
不匹配的電子郵件的任何有效的文件擴展名,郵件客戶端附加的".msg"
之一,".eml"
,等來的文件名。當用戶打開附件時,它會以電子郵件的形式打開,並且不能正確顯示,因爲MHTML文件和電子郵件的保存方式不同。修改CDO.Message對象中附件的內容類型
Sub SendEmail(FromAddress, ToAddress, Subject, Body, Attachment)
Call Err.Clear
On Error Resume Next
Schema = "http://schemas.microsoft.com/cdo/configuration/"
Set Configuration = Sys.OleObject("CDO.Configuration")
Configuration.Fields.Item(Schema + "sendusing") = 2
Configuration.Fields.Item(Schema + "smtpserver") = SMTPServer
Configuration.Fields.Item(Schema + "smtpserverport") = 25
Configuration.Fields.Item(Schema + "smtpauthenticate") = 1
' Configuration.Fields.Item(schema + "sendusername") = ""
' Configuration.Fields.Item(schema + "sendpassword") = ""
Call Configuration.Fields.Update
Set Message = Sys.OleObject("CDO.Message")
Set Message.Configuration = Configuration
Message.From = FromAddress
Message.To = ToAddress
Message.Subject = Subject
Message.HTMLBody = Body
If Not IsEmpty(Attachment) Then
'CDO.Message.AddAttachment doesn't set the correct content media type for an MHTML file.
Call Message.AddAttachment(Attachment)
End If
Call Message.Send
End Sub
當我運行這段代碼,Message.Attachments.Item(1).ContentMediaType
設置爲"message/rfc822"
。我需要它是"multipart/related"
如果Attachment
(字符串)與".mht"
或".mhtml"
(不區分大小寫)結束。我可以用下面的代碼來做到這一點。
If Len(Attachment) >= 4 And InStr(Len(Attachment) - 3, Attachment, ".mht", vbTextCompare) Or Len(Attachment) >= 4 And InStr(Len(Attachment) - 5, Attachment, ".mhtml", vbTextCompare) Then
Message.Attachments.Item(1).ContentMediaType = "multipart/related"
End If
對於一些未知的原因,這從取消定義的Message.Attachments
附件。
我已經看過手動添加附件每個these instructions,但是當我打電話Message.Attachments.Item(1).Fields.Update
時,該對象變得未定義。我認爲設置附件的ContentMediaType
,隱含地調用它的Fields
的Update
方法,這是我認爲對這種意外行爲負責的方法。
我怎樣才能解決這個問題,並與"multipart/related"
內容類型發送一個MHTML文件,同時保持適當的文件擴展名?
@IlyaKurnosov,我已經試過Microsoft Outlook 2010中,蘋果公司郵件(在iPhone),我的Web客戶端(交換)。 –
可能相關:http://stackoverflow.com/questions/31250/content-type-for-mht-files –