Сообщение CDO: текстовое вложение повреждено - PullRequest
1 голос
/ 11 декабря 2008

Я создаю сообщение электронной почты, используя объект 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(), он сохранит действительный файл на диске.

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

Ответы [ 3 ]

2 голосов
/ 11 декабря 2008

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

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

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

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

0 голосов
/ 07 мая 2009

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

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

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

Jmail.message: Content-Transfer-Encoding: base64

0 голосов
/ 11 декабря 2008

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

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

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

...