Ändern des Inhaltstyps einer Anlage in einem CDO.Message-Objekt

Wenn ich versuche, eine MHTML-Datei als Anhang zu einer E-Mail-Nachricht in VBScript hinzuzufügen, wird dieContentMediaType ist falsch eingestellt auf"message/rfc822" (RFC 822). Soweit ich weiß, ist dies laut Microsoft korrekt, aber laut Microsoft falschRFC 2557 was besagt, dass es sein sollte"multipart/related". Dies ist ein Problem, da die meisten (wenn nicht alle) E-Mail-Clients interpretieren"message/rfc822" als E-Mail-Nachricht. Seit den Dateierweiterungen".mht" und".mhtml" Entspricht keine gültige Dateierweiterung einer E-Mail-Nachricht, hängt der E-Mail-Client eine an".msg", ".eml"usw. zum Dateinamen. Wenn ein Benutzer den Anhang öffnet, wird er als E-Mail-Nachricht geöffnet und nicht korrekt angezeigt, da eine MHTML-Datei und eine E-Mail-Nachricht unterschiedlich gespeichert werden.

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

Wenn ich diesen Code ausführe,Message.Attachments.Item(1).ContentMediaType ist eingestellt auf"message/rfc822". Ich muss es sein"multipart/related" obAttachment (eine Zeichenfolge) endet mit".mht" oder".mhtml" (Groß- / Kleinschreibung wird nicht berücksichtigt). Ich kann dies mit dem folgenden Code tun.

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

Aus einem unbekannten Grund wird hierdurch der Anhang von aufgehobenMessage.Attachments.

Ich habe mir das manuelle Hinzufügen des Anhangs per angeschautdiese Anweisungen, aber wenn ich anrufeMessage.Attachments.Item(1).Fields.Updatewird das Objekt undefiniert. Ich denke, die Anhänge einzustellenContentMediaType, ruft implizit es aufFields'sUpdate Methode, die meiner Meinung nach für dieses unerwartete Verhalten verantwortlich ist.

Wie kann ich das umgehen und mit dem eine MHTML-Datei verschicken?"multipart/related" Inhaltstyp unter Beibehaltung der richtigen Dateierweiterung?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage