Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Commons Email и кодировка имен вложений.


Автор: matras 28.1.2010, 20:29
Здравствуйте,Коллеги.
проблема в следующем:
с помощью Commons Email v1.2 отправляю письмо с вложенным файлом,в имени которого содержится кирилица
(Например Тест.doc)

Код

  EmailAttachment attachment = new EmailAttachment();
  attachment.setPath(fTemp.getAbsolutePath()); 
  System.out.println("attach path - " + attachment.getPath());
  attachment.setDisposition(EmailAttachment.ATTACHMENT);
  attachment.setDescription(fTemp.getName());
  System.out.println("attach desc - " + attachment.getDescription());
  attachment.setName(fTemp.getName());
  System.out.println("attach name - " + attachment.getName());
  
  MultiPartEmail email = new MultiPartEmail();
  email.setDebug(true);
  email.setHostName("smtp.a.com");
  email.addTo("[email protected]");
  email.setFrom("[email protected]");
  email.setSubject("Test Mail");
   
 // add the attachment
  email.attach(attachment);
  email.send();


Где fTemp имеет тип File

Проблема в том что в этом случае ломается кодировка имени того самого вложенного файла:
Код

MAIL FROM:<[email protected]>
250 2.1.0 Sender OK
RCPT TO:<[email protected]>
250 2.1.5 Recipient OK
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   "[email protected]"
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Date: Thu, 28 Jan 2010 21:14:35 +0400 (AZT)
From: "[email protected]"
To: "[email protected]" 
Message-ID: <29706134.1.1264698875894.JavaMail.SYSTEM@host>
Subject: Test Mail
MIME-Version: 1.0
Content-Type: multipart/mixed; 
    boundary="----=_Part_0_29857804.1264698875832"

------=_Part_0_29857804.1264698875832
Content-Type: application/octet-stream; name=""5AB.doc"  <------- Ломаная кодировка имени вложения
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=""5AB.doc"  <------- то же самое
Content-Description: =?Cp1251?B?0uXx8i5kb2M=?=

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTFcZGVmZjBcZGVmbGFuZzEwNDl7XGZvbnR0Ymx7XGYwXGZu
aWxcZmNoYXJzZXQwIDt9fQ0Ke1wqXGdlbmVyYXRvciBNc2Z0ZWRpdCA1LjQxLjIxLjI1MDA7fVx2
aWV3a2luZDRcdWMxXHBhcmRcbGFuZzEwMzNcZjBcZnMyMCBudGNuIVxwYXINCn0NCgA=
------=_Part_0_29857804.1264698875832--
.
250 2.6.0 <29706134.1.1264698875894.JavaMail.SYSTEM@host> Queued mail for delivery
QUIT
221 2.0.0 Service closing transmission channel



Прошу помощи сообщества.

Автор: matras 29.1.2010, 23:40
Отвечаю сам себе,возможно в будущем будет кому то полезно smile
Следует кодировать имя вложения например в quoted-printable с явным указанием кодировки.
Для чего вполне подходит Common Codecs.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)