Modificando o tipo de conteúdo de um anexo em um objeto CDO.Message

Quando tento adicionar um arquivo MHTML como um anexo a uma mensagem de email no VBScript,ContentMediaType está incorretamente configurado para"message/rfc822" (RFC 822). Pelo que entendi, isso está correto de acordo com a Microsoft, mas está incorreto de acordo comRFC 2557 que afirma que deve ser"multipart/related". Isso é um problema, porque a maioria dos clientes de email (se não todos)"message/rfc822" como uma mensagem de email. Desde as extensões de arquivo".mht" e".mhtml" não corresponde a nenhuma extensão de arquivo válida de uma mensagem de email, o cliente de email anexa".msg", ".eml", etc. para o nome do arquivo. Quando um usuário abre o anexo, ele é aberto como uma mensagem de e-mail e não é exibido corretamente, pois um arquivo MHTML e uma mensagem de e-mail são salvos de forma diferente.

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

Quando eu executo este código,Message.Attachments.Item(1).ContentMediaType está configurado para"message/rfc822". Eu preciso que seja"multipart/related" E seAttachment (uma string) termina com".mht" ou".mhtml" (insensível a maiúsculas e minúsculas). Eu posso fazer isso com o seguinte código.

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

Por alguma razão desconhecida, isso não define oMessage.Attachments.

Eu olhei para adicionar manualmente o anexo porestas instruçõesmas quando eu chamoMessage.Attachments.Item(1).Fields.Update, o objeto se torna indefinido. Eu acho que a fixação dos anexosContentMediaType, implicitamente invoca éFields'sUpdate método que é o que eu acho que é responsável por esse comportamento inesperado.

Como posso contornar isso e enviar um arquivo MHTML com o"multipart/related" tipo de conteúdo, mantendo a extensão de arquivo adequada?

questionAnswers(1)

yourAnswerToTheQuestion