Я создаю сообщение электронной почты, используя объект 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
на 7 бит и base64, не сработало.
Я пытался установить ContentMediaType
для вложения на text/plain
, не получилось.
Я пытался не переименовывать вложение после добавления, не сработало.
ContentMediaType
для вложения по умолчанию установлено на application/octet-stream
, поэтому я не могу понять, почему (и чем) оно вообще меняется.
Если я выполню .SaveToFile()
для вложения сразу после .Send()
, он сохранит действительный файл на диске.
Это проблема в моем коде, или это настройка почтового сервера или что-то в этом роде?