CDO съобщение: текстовият прикачен файл е повреден

Създавам имейл съобщение, използвайки CDO обект (и VB6, но това няма особено значение).

With New CDO.Message
  .To = "<address>"
  .Subject = "Manifest test 8"
  .Organization = "<company>"
  .From = "<address>"
  .Sender = .From

  With .Configuration
    .Fields(cdoSendUsingMethod).Value = cdoSendUsingPort
    .Fields(cdoSMTPServer).Value = "192.168.0.4"
    .Fields.Update
  End With

  With .AddAttachment("c:\import\customermanifestOURACCOUNT11122008110032.dat")
    .Fields(cdoContentDisposition).Value = "attachment; filename=""Consignor.dat"""
    .Fields.Update
  End With

  .Send
End With

Както можете да видите, съобщението е празно и съдържа прикачен файл, който преименувам в имейла.

Прикаченият файл е ASCII текстов файл с фиксирана ширина, който съдържа някои резултати от нашите системи, по един запис на ред, разделени с CRLF.

Когато съобщението бъде изпратено, всички CR се премахват от прикачения файл, така че получателят получава файл, който има само LF и следователно е повреден.

Опитах се да променя ContentEncoding на 7bit и base64, не работи.

Опитах се да задам ContentMediaType за прикачения файл към text/plain, не се получи.

Опитах да не преименувам прикачения файл след добавяне, не се получи.

ContentMediaType за прикачения файл е зададен на application/octet-stream по подразбиране, така че не мога да разбера защо (и от какво) се променя на първо място.

Ако изпълня .SaveToFile() на прикачения файл веднага след .Send(), той записва валиден файл на диска.

Това проблем ли е в моя код, или е настройка на пощенския сървър или нещо подобно?


person GSerg    schedule 11.12.2008    source източник


Отговори (3)


Добре, това беше странно.

Използвахме нашите акаунти в gmail, за да тестваме това нещо, по-конкретно уеб интерфейса на gmail. Щракнахме върху връзки към прикачени файлове, за да запазим получените файлове. И файловете бяха повредени.

Веднага след като вместо това опитахме някои дебели клиенти, се оказа добре. Всички файлове се изтеглят правилно без никакви повреди.

Така че предполагам, че това е грешка в уеб интерфейса на gmail (за разлика от POP3 интерфейса на gmail).

person GSerg    schedule 11.12.2008

Не съм използвал CDO от дълго време, но си спомням, че имах този проблем в миналото. Изпробвайки различни неща, ние разбрахме, че ако има някакво съдържание в тялото на съобщението, прикачените файлове са изпратени правилно.

Странно, знам.

опитайте и ни уведомете.

person Victor    schedule 11.12.2008

Току-що имам същия проблем. Преминах на Jmail и моят CSV (текстов файл) сега беше точно като оригинала, когато го прочетох от gmail.

Сравних оригиналното съобщение (в Gmail, опция - преглед на оригиналното съобщение) и открих, че с CDO.Message прикаченият файл не е кодиран много добре, той се съхранява в текстов формат и мейл клиентът прави каквото иска с него. С Jmail съобщението е кодирано в Base64, така че се запазва в първоначалното си състояние от началото до края. Така че, бъдете внимателни, когато използвате CDO.Message с прикачени текстови файлове! Опитайте вместо това да използвате Jmail (безплатно).

CDO.message: Content-Transfer-Encoding: цитиран-печат

Jmail.message: Content-Transfer-Encoding: base64

person Community    schedule 07.05.2009