разобрать вложение из составной строки содержимого почты в Java - PullRequest
1 голос
/ 25 января 2011

Я тестирую приложение, отправляющее письмо с вложением в среде интеграции.Для этого я настраиваю фальшивый почтовый сервер smtp (http://quintanasoft.com/dumbster/) и настраиваю свое приложение для его использования. В конце теста я хочу проверить, отправило ли мое приложение электронное письмо через фальшивый почтовый сервер, а такжезнаю, если содержимое (по крайней мере, вложенный файл) точно такое, как я ожидаю.

Dumpster упаковывает эти письма в свои собственные объекты, просто содержащие пары ключ-значение заголовка и тело в виде простого текста.вопрос в том, как мне легко разделить почтовое тело, чтобы получить и оценить содержимое вложенного файла из него.

Ответы [ 2 ]

2 голосов
/ 27 сентября 2013

Прикрепите файл, который вы уверены, из MIME-типов в javamail.Отправка электронной почты через 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

0 голосов
/ 25 января 2011

Для начала (не уверен, есть ли более простые способы сделать это), рассмотрите возможность использования JavaMail API. Попробуйте получить сообщение целиком (включая заголовки) - возможно, с помощью SmtpMessage.toString(), обернуть его в new ByteArrayInputStream(smtpMessage.toString().getBytes()) и передать его в javax.mail.internet.MimeMessage. (ПРИМЕЧАНИЕ. Я не очень знаком со стандартом MIME и не знаю, следует ли вам использовать здесь перегрузку getBytes(Charset)).

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