VBScript で MHTML ファイルを添付ファイルとして電子メール メッセージに追加しようとすると、ContentMediaType
誤って"message/rfc822"
( RFC 822 ) に設定されます。私が理解していることから、これはマイクロソフトによれば正しいですが、RFC 2557によると正しくありません"multipart/related"
。"message/rfc822"
ほとんどの (すべてではないにしても) メール クライアントは電子メール メッセージとして解釈されるため、これは問題です。ファイル拡張子".mht"
と".mhtml"
は電子メール メッセージの有効なファイル拡張子と一致しないため、メール クライアントは 、 などのいずれかをファイル名に追加".msg"
し".eml"
ます。ユーザーが添付ファイルを開くと、電子メール メッセージとして開き、MHTML ファイルと電子メール メッセージの保存方法が異なるため、正しく表示されません。
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"
if (文字列) がor (大文字と小文字を区別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
。
これらの指示に従って添付ファイルを手動で追加することを見てきましたが、呼び出すMessage.Attachments.Item(1).Fields.Update
と、オブジェクトが未定義になります。添付ファイルの を設定すると、この予期しない動作の原因であると思われるメソッドがContentMediaType
暗黙的に呼び出されると思います。Fields
Update
"multipart/related"
これを回避し、適切なファイル拡張子を維持しながら、コンテンツ タイプを含む MHTML ファイルを送信するにはどうすればよいですか?