Как контролировать выравнивание почтового заголовка? - PullRequest
1 голос
/ 25 февраля 2012

Я сталкиваюсь с ситуацией, когда я отправляю электронное письмо, тема письма которого содержит более 80 символов, иногда в тему сообщения электронной почты вставляется символ «табуляция».Я проверяю заголовок почты недействительного письма, они выровнены, если в заголовке письма больше 80 символов, он будет перенесен на новую строку и вставлен «табуляция».Я не знаю, какая конфигурация управления, настройки javaMail?Настройка SMTP?

Образцы заголовков:

случай один: тема сообщения электронной почты неактивна, вставлена ​​символьная вкладка.

Received: from as09.aaaaaaaaa.com ([192.168.1.129]) by aaaaaaaaa.com
    ([192.168.1.49]) with ESMTP (TREND IMSS SMTP Service 7.0; TLS:
    TLSv1/SSLv3,168bits,DES-CBC3-SHA) id ba8afe04001a23ba ; Wed, 1 Feb 2012
    16:17:10 +0800
Received: from as09 (localhost [127.0.0.1])by as09.aaaaaaaaa.com
    (8.13.8+Sun/8.13.8) with ESMTP id q118HAgi021891;Wed, 1 Feb 2012 16:17:10
    +0800 (HKT)
Message-ID: <25866052.1328084230581.JavaMail.oracle@as09>
Date: Wed, 1 Feb 2012 08:17:10 +0000
From: <sss@abc.com>
To: ben@abc.com,
    john@abc.com,
    jimmy@abc.com
Subject: test Daily report for city pairs of iPhone App enquiries indocument
     version Demo Customer/Test/Test/123/1231
CC: sam@abc.com
MIME-Version: 1.0

случай два: действительный субъект электронной почты, только что завернутый

Received: from as08.aaaaaaaaa.com ([192.168.1.104]) by aaaaaaaaa.com
 ([192.168.1.49]) with ESMTP (TREND IMSS SMTP Service 7.0; TLS:
 TLSv1/SSLv3,168bits,DES-CBC3-SHA) id c356e969001b37a5 ; Fri, 3 Feb 2012
 09:16:58 +0800
Received: from as08.aaaaaaaaa.com (localhost [127.0.0.1])   by
 as08.aaaaaaaaa.com (8.13.4+Sun/8.13.4) with ESMTP id q131Gw1l006160;   Fri, 3
 Feb 2012 09:16:58 +0800 (HKT)
Message-ID: <17351450.1328231818282.JavaMail.oracle@as08.aaaaaaaaa.com>
Date: Fri, 3 Feb 2012 01:16:58 +0000
From: <sss@abc.com>
To: ben@abc.com
Subject: test Daily report for city pairs of iPhone App enquiries in
 document version Demo Customer/Test/Test/123/1231
CC: sam@abc.com

пример кода Java:

public void sendEmail(Request req) throws Exception {
  Session mailSession;
  MimeMessage msg;
  Properties mailSessionProp = new Properties();
  mailSessionProp.put("mail.smtp.host", "localhost");
  mailSessionProp.put("mail.smtp.port", "25");

  mailSession = Session.getInstance(mailSessionProp, null);
  msg = new MimeMessage(mailSession);
  msg.addRecipients("TO", InternetAddress.parse(req.getRecipientAddress()));
  msg.setSubject(MimeUtility.encodeText(req.getSubject(), "UTF-8", "B"));
  msg.setHeader("X-Mailer", "");
  msg.setSentDate(new Date());
  msg.setContent(req.getMessage(), req.getMessageContentType().getType());
  Transport.send(msg);
}

JavaMail:

    Manifest-Version: 1.0
    Implementation-Version: 1.3.3_01
    Specification-Title: JavaMail(TM) API Design Specification
    Specification-Version: 1.3
    Extension-Name: javax.mail
    Created-By: 1.3.1 (Sun Microsystems Inc.)
    Implementation-Vendor-Id: com.sun
    Implementation-Vendor: Sun Microsystems, Inc.
    Specification-Vendor: Sun Microsystems, Inc.
    SCCS-ID: @(#)javamail.mf    1.5 02/03/14

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Это поведение правильно в соответствии с http://www.faqs.org/rfcs/rfc2822.html

2.2.3.Длинные поля заголовка

Каждое поле заголовка логически представляет собой одну строку символов, содержащую имя поля, двоеточие и тело поля.Для удобства, однако, и для того, чтобы справиться с ограничениями в 998/78 символов на строку, часть тела поля поля заголовка может быть разбита на многострочное представление;это называется «складывание».Общее правило заключается в том, что везде, где этот стандарт допускает складывание пробелов (не просто символов WSP), CRLF может быть вставлен перед любым WSP.

1 голос
/ 25 февраля 2012

JavaMail обернет заголовок при вызове setSubject () и развернет его при вызове getSubject ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...