2012-02-25 5 views
1

状況に遭遇しました。メールの件名が80文字以上のメールを送信すると、メールの件名に「タブ」の文字が挿入されることがあります。無効な電子メールのメールヘッダーをチェックし、80文字以上のメールヘッダエントリがある場合は整列し、新しい行に折り返して 'タブ'を挿入します。どのような設定を制御するか分からない、javaMailの設定? SMTPの設定?メールヘッダーのアラインメントを制御する方法は?

サンプルヘッダ:

ケース1:invaild電子メールの件名には、文字 'タブ' を挿入します。

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: <[email protected]> 
Date: Wed, 1 Feb 2012 08:17:10 +0000 
From: <[email protected]> 
To: [email protected], 
    [email protected], 
    [email protected] 
Subject: test Daily report for city pairs of iPhone App enquiries indocument 
    version Demo Customer/Test/Test/123/1231 
CC: [email protected] 
MIME-Version: 1.0 

ケース2:有効な電子メールの件名は、単に

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: <[email protected]> 
Date: Fri, 3 Feb 2012 01:16:58 +0000 
From: <[email protected]> 
To: [email protected] 
Subject: test Daily report for city pairs of iPhone App enquiries in 
document version Demo Customer/Test/Test/123/1231 
CC: [email protected] 

を包んサンプル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 
+0

[メール] 425 –

答えて

1

JavaMailがヘッダーをラップしますsetSubを呼び出すject()を呼び出し、getSubject()を呼び出すときにそれをアンラップします。

+0

しかし、同じJavaコードで、なぜ時々 'タブ'を挿入するのはなぜですか?私はJavaMailをチェックしました、それは主題を包むだけで、新しい文字 '\ t'を挿入するのではありません。 –

+0

いくつかの例を時々表示する必要があります。ヘッダーのフォーマット方法は、折り返し線(継続行)が空白文字で始まることです。 MIME仕様ではスペースまたはタブが許可されますが、JavaMailは未処理のMIMEメッセージを読むときにヘッダーを読みやすくするため、タブを選択します。 –

+0

こんにちはビル、私はいくつかのサンプルのメールヘッダーをアップロードします。 JavaMailコードをチェックしましたが、メールヘッダをラップするときにタブを挿入しません。 –

1

この現象はhttp://www.faqs.org/rfcs/rfc2822.html

2.2.3に従って正しいです。長いヘッダーフィールド

各ヘッダーフィールドは、論理的には、フィールド名、コロン、およびフィールド本文からなる1行の文字列です。しかし、便宜上、行ごとに998/78文字制限に対処するために、ヘッダーフィールドのフィールド本文部分を複数の行に分割することができます。これは「折り畳み」と呼ばれています。一般的な規則は、この規格が空白(単にWSP文字ではない)を折り畳むことができる場合は、CRLFを任意のWSPの前に挿入することができるということです。

+0

こんにちはTichodroma、どのシステムが 'タブ'を挿入しているのですか?それを設定するには? –