2011-01-25 4 views
1

통합 환경에서 첨부 파일이있는 메일을 보내는 응용 프로그램을 테스트하고 있습니다. 이를 위해 나는 가짜 smtp 메일 서버 (http://quintanasoft.com/dumbster/)를 설정하고이를 사용하도록 내 응용 프로그램을 구성합니다. 내 테스트가 끝나면 내 응용 프로그램이 내 가짜 메일 서버를 통해 전자 메일을 보냈는지 확인하고 콘텐츠 (적어도 첨부 파일)가 정확히 내가 원하는지 알고 싶습니다.자바에서 멀티 파트 메일 내용 문자열을 구문 분석하십시오.

Dumpster는 헤더 키 - 값 쌍과 본문을 일반 텍스트로 포함하는 자체 개체에 이러한 메일을 래핑합니다. 내 질문에 쉽게 첨부 파일 내용을 가져오고 평가할 수있는 메일 본문을 부분적으로 어떻게 처리 할 수 ​​있습니다.

답변

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

관련 문제