Изменение типа содержимого вложения в объекте CDO.Message

Когда я пытаюсь добавить файл MHTML в качестве вложения к сообщению электронной почты в VBScript,ContentMediaType неправильно установлено на"message/rfc822" (RFC 822). Насколько я понимаю, это правильно в соответствии с Microsoft, но неверно в соответствии с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" если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«sUpdate метод, который, как я думаю, ответственен за это неожиданное поведение.

Как я могу обойти это и отправить файл MHTML с"multipart/related" тип содержимого при сохранении правильного расширения файла?

Ответы на вопрос(1)

Ваш ответ на вопрос