Modyfikowanie typu zawartości załącznika w obiekcie CDO.Message

Kiedy próbuję dodać plik MHTML jako załącznik do wiadomości e-mail w VBScript,ContentMediaType jest nieprawidłowo ustawiony na"message/rfc822" (RFC 822). Z tego, co rozumiem, jest to zgodne z Microsoftem, ale jest niepoprawneRFC 2557 które mówi, że powinno być"multipart/related". Jest to problem, ponieważ większość (jeśli nie wszyscy) klienci poczty interpretują"message/rfc822" jako wiadomość e-mail. Od rozszerzeń plików".mht" i".mhtml" nie pasuje do żadnego poprawnego rozszerzenia pliku wiadomości e-mail, klient poczty dołącza jeden z".msg", ".eml"itd. do nazwy pliku. Gdy użytkownik otwiera załącznik, otwiera się jako wiadomość e-mail i nie wyświetla się poprawnie, ponieważ plik MHTML i wiadomość e-mail są zapisywane inaczej.

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

Kiedy uruchomię ten kod,Message.Attachments.Item(1).ContentMediaType jest ustawione na"message/rfc822". Potrzebuję tego"multipart/related" JeśliAttachment (ciąg) kończy się na".mht" lub".mhtml" (bez rozróżniania wielkości liter). Mogę to zrobić za pomocą następującego kodu.

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

Z niewiadomego powodu powoduje to usunięcie załącznika zMessage.Attachments.

Sprawdziłem ręczne dodawanie załącznika nate instrukcje, ale kiedy dzwonięMessage.Attachments.Item(1).Fields.Update, obiekt staje się niezdefiniowany. Myślę, że ustawianie załącznikówContentMediaType, domyślnie wywołuje toFieldsjestUpdate Metoda, która moim zdaniem jest odpowiedzialna za to nieoczekiwane zachowanie.

Jak mogę to obejść i wysłać plik MHTML za pomocą"multipart/related" typ zawartości przy zachowaniu prawidłowego rozszerzenia pliku?

questionAnswers(1)

yourAnswerToTheQuestion