Modificación del tipo de contenido de un archivo adjunto en un objeto CDO.Message

Cuando intento agregar un archivo MHTML como archivo adjunto a un mensaje de correo electrónico en VBScript,ContentMediaType está configurado incorrectamente en"message/rfc822" (RFC 822). Por lo que entiendo, esto es correcto según Microsoft, pero es incorrecto segúnRFC 2557 que establece que debería ser"multipart/related". Esto es un problema, porque la mayoría (si no todos) los clientes de correo interpretan"message/rfc822" como un mensaje de correo electrónico. Desde las extensiones de archivo".mht" y".mhtml" no coincide con ninguna extensión de archivo válida de un mensaje de correo electrónico, el cliente de correo agrega una de".msg", ".eml", etc. al nombre del archivo. Cuando un usuario abre el archivo adjunto, se abre como un mensaje de correo electrónico y no se muestra correctamente, ya que un archivo MHTML y un mensaje de correo electrónico se guardan de manera 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

Cuando corro este código,Message.Attachments.Item(1).ContentMediaType se establece en"message/rfc822". Necesito que sea"multipart/related" SiAttachment (una cuerda) termina con".mht" o".mhtml" (mayúsculas y minúsculas). Puedo hacer esto con el siguiente 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 alguna razón desconocida, esto define el adjunto deMessage.Attachments.

He mirado manualmente añadiendo el archivo adjunto porestas instrucciones, pero cuando llamoMessage.Attachments.Item(1).Fields.Update, el objeto se vuelve indefinido. Creo que la configuración de los archivos adjuntosContentMediaTypeinvoca implícitamenteFieldsesUpdate método que es lo que creo que es responsable de este comportamiento inesperado.

¿Cómo puedo evitar esto y enviar un archivo MHTML con el"multipart/related" tipo de contenido manteniendo la extensión de archivo adecuada?

Respuestas a la pregunta(1)

Su respuesta a la pregunta