2011-01-25 14 views
1

私は、統合環境で添付ファイル付きのメールを送信するアプリケーションをテストしています。このため私は偽のSMTPサーバ(http://quintanasoft.com/dumbster/)を設定し、それを使用するようにアプリケーションを設定します。私のテストの最後に、自分のアプリケーションが私の偽のメールサーバ経由で電子メールを送信したかどうかをチェックしたいと思います。コンテンツ(少なくとも添付ファイル)が私が期待しているものであるかどうかを知りたいと思っています。複数のメールから添付ファイルを解析javaのコンテンツ文字列

DumpsterはこれらのメールをヘッダーのKey-Valueペアと本文をプレーンテキストとして含む独自のオブジェクトにラッピングしています。私の質問は、添付ファイルの内容を取得して評価するためにメール本文を簡単に分割する方法です。

答えて

0

簡単な方法があるかどうかわからない場所として、JavaMail APIの使用を検討してください。メッセージ全体(ヘッダを含む)をつかむようにしてください。おそらくSmtpMessage.toString()で、new ByteArrayInputStream(smtpMessage.toString().getBytes())に入れてjavax.mail.internet.MimeMessageに渡してください。 (注:私はMIME標準に精通しておらず、ここではgetBytes(Charset)のオーバーロードを使用すべきかどうかわかりません)。

1

javamailで特定のMIMEタイプのファイルを添付します。 smtp上で電子メールを送信すると、ファイルのバイトの前に電子メールの本文の中に一連のデータがあることを利用することができます。ファイルのバイトはbase64で、電子メールの文字のメインチャンクに含まれます。ここで

private static final String YOUR_ATTACMETN_DATA = "Content-Type: image/jpeg; name=Invoice.jpgContent-Transfer-Encoding: base64Content-Disposition: attachment; filename=image.jpg"; 
@Before 
public final void setup() throws UserException{ 
    server = SimpleSmtpServer.start(); 
} 
@After 
public final void tearDown(){ 
    server.stop(); 
} 
@Test 
public void test_that_attachment_has_been_recieved() throws IOException, MessagingException { 
    email = getMessage(); 
    YourEmailSendingClass.sendEmail(email); 
    Iterator<SmtpMessage> it = server.getReceivedEmail(); 
    SmtpMessage recievedMessage = (SmtpMessage)it.next(); 
    assertTrue(recievedMessage.getBody.contains(YOUR_ATTACHMENT_DATA))); 
} 

は別の、より詳細にこれに似た何かをした誰かのページです。 http://www.lordofthejars.com/2012/04/why-does-rain-fall-from-above-why-do.html

関連する問題