Сообщение 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(), оно сохранит действительный файл на диске.

Это проблема в моем коде, или это настройка почтового сервера или что-то?

11.12.2008 14:05:33
3 ОТВЕТА

Я не использовал CDO в течение долгого времени, но я помню эту проблему в прошлом. Пробуя разные вещи, мы решили, что если в теле сообщения есть какой-либо контент, то вложения были отправлены правильно.

Странно, я знаю.

попробуйте и дайте нам знать.

0
11.12.2008 14:20:36
РЕШЕНИЕ

Хорошо, это было странно.

Мы использовали наши учетные записи Gmail, чтобы протестировать эту вещь, в частности, веб-интерфейс Gmail. Мы нажимали ссылки на вложения, чтобы сохранить найденные файлы. И файлы были повреждены.

Как только мы вместо этого попробовали несколько толстых клиентов, все оказалось в порядке. Все файлы загружаются правильно без каких-либо повреждений.

Итак, я предполагаю, что это ошибка в веб-интерфейсе gmail (в отличие от интерфейса gmail POP3).

2
11.12.2008 14:43:56

У меня такая же проблема. Я переключился на Jmail, и мой CSV (текстовый файл) теперь был точно таким же, как и оригинал, когда я читал его из gmail.

Я сравнил исходное сообщение (в Gmail, опция - просмотреть исходное сообщение) и обнаружил, что в CDO.Message вложение не очень хорошо кодируется, оно сохраняется в текстовом формате, и почтовый клиент делает с ним то, что он хочет. В Jmail сообщение кодируется в Base64, поэтому оно сохраняется в своем первоначальном состоянии от начала до конца. Поэтому будьте осторожны при использовании CDO.Message с вложенными текстовыми файлами! Попробуйте использовать Jmail (бесплатно) вместо этого.

CDO.message: Content-Transfer-Encoding: цитируемый для печати

Jmail.message: Content-Transfer-Encoding: base64

0
7.05.2009 03:42:16