javamail прикрепить "noname" изнутри Tomcat

Я пытаюсь отправить электронное письмо, используя javamail, внутри веб-приложения, использующего TomEE. Моя проблема в том, что когда я прикрепляю файл, такой как PDF, файл, который я получаю, называется "noname". Также я не получаю основной текст.

Как наблюдение, если я выполняю свой код из "основной" программы (в другом проекте), электронное письмо отправляется отлично. Вот код:

public class EnviaCorreo{


static Properties mailServerProperties;
static Session getMailSession;
static MimeMessage generateMailMessage;


public void generateAndSendEmail() throws AddressException, MessagingException {

    System.out.println("\n 1st ===> setup Mail Server Properties..");
    mailServerProperties = System.getProperties();
    mailServerProperties.put("mail.smtp.port", "587");
    mailServerProperties.put("mail.smtp.auth", "true");
    mailServerProperties.put("mail.smtp.starttls.enable", "true");
    System.out.println("Mail Server Properties have been setup successfully..");

    System.out.println("\n\n 2nd ===> get Mail Session..");
    getMailSession = Session.getDefaultInstance(mailServerProperties, null);
    generateMailMessage = new MimeMessage(getMailSession);
    generateMailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("xxx@gmail.com"));
    generateMailMessage.addRecipient(Message.RecipientType.CC, new InternetAddress("yyy@gmail.com"));
    generateMailMessage.setSubject("Foo store has bought strawberries");

    MimeMultipart multiParte = new MimeMultipart();
    BodyPart adjunto = new MimeBodyPart();
    adjunto.setDataHandler(new DataHandler(new FileDataSource("/home/foo/Desktop/FooProject/src/main/resources/fruit/6781430324446945.pdf")));
    adjunto.setFileName("readme.pdf");

    BodyPart texto = new MimeBodyPart();
    texto.setText("Success!!");



    multiParte.addBodyPart(texto);
    multiParte.addBodyPart(adjunto);

    generateMailMessage.setContent(multiParte, "text/html");
    System.out.println("Mail Session has been created successfully..");


    System.out.println("\n\n 3rd ===> Get Session and Send mail");
    Transport transport = getMailSession.getTransport("smtp");


    transport.connect("smtp.gmail.com", "yyy@gmail.com", "foopsswd123()");
    transport.sendMessage(generateMailMessage, generateMailMessage.getAllRecipients());
    transport.close();
}

бонус

Я работаю с TomEE и iText для создания PDF. Где я должен поместить папку, в которую я сохраняю динамически сгенерированные PDF-файлы?

1 ответ

TomEE по умолчанию использует geronimo javamail (в tomee lib). Вы можете заменить его на версию, которую вы использовали в своей основной и добавить geronimo-locator и geronimo-registry http://repo1.maven.org/maven2/org/apache/geronimo/specs/geronimo-osgi-locator/1.1/geronimo-osgi-locator-1.1.jar и http://repo1.maven.org/maven2/org/apache/geronimo/specs/geronimo-osgi-registry/1.1/geronimo-osgi-registry-1.1.jar а также в библиотеках

Если вы не хотите менять версию, используйте сессию tomee.xml, чтобы внедрить вашу сессию. Я знаю, что для Gmail вы должны предоставить аутентификатор, например, с Geronimo Java

Другие вопросы по тегам