fs := 'C:\prj\mail\x1.eml' asFilename readStream.
msg := MailMessage readFrom: fs.
attachName := msg attachmentNames at: 1.
attachment := (msg attachmentAt: 1) removeContentTransferEncoding.
attachment writeContentsOn: attachName asFilename writeStream.
Этот код, взятый из книжки, не работает из-за двух проблем. Чтобы он
работал, надо открывать файл так:
fs := ('C:\prj\mail\x1.eml' asFilename withEncoding: #'iso8859-1')
readStream.
Во-вторых, файл, сохранённый на диске из Outlook Express, разделителем
строк имеет CRLF, и в таком случае код в
Net.MultipartBody>>scanToBoundary: boundary from: stream
useSourceStream: aBoolean do: aDyadicBlock работает некорректно.
Советую заменить там
str := (lineEnd = LineEndCR
ifTrue: [String with: Character cr ]
ifFalse: [ String with: Character cr with: Character lf ]).
на
str := String with: Character cr
и убрать
stream lineEndTransparent.
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru