Отправить письмо с вложением на моем жестком диске с помощью Apache Commons Email - PullRequest
0 голосов
/ 12 декабря 2018

У меня проблема с отправкой вложения по почте с помощью Apache commons email.Чтобы объяснить это быстро и грязно, письмо отправляется, но я не вижу вложения вообще, когда я смотрю на него в Outlook.

Я использую Apache commons email v1.4 и JAVA 8. Я хочу добавить журналфайл, который находится на моем жестком диске в этом месте C: \ myfolder \ myfile.log

Это то, что я пытался добавить вложение

Path logRejetPath = Paths.get("C:\\myfolder\\myfile.log");
Boolean pathExists = Files.exists(logRejetPath, new LinkOption[]{LinkOption.NOFOLLOW_LINKS});

if (pathExists) {
   File rejLogFile = new File(logRejetPath.toString());
   email.attach(new FileDataSource(rejLogFile), "test", "test");                
}
email.send();

или

Path logRejetPath = Paths.get("C:\\myfolder\\myfile.log");
Boolean pathExists = Files.exists(logRejetPath, new LinkOption[]{LinkOption.NOFOLLOW_LINKS});

if (pathExists) {
   File rejLogFile = new File(logRejetPath.toString());
   email.attach(rejLogFile);                
}
email.send();

Или

Path logRejetPath = Paths.get("C:\\myfolder\\myfile.log");
Boolean pathExists = Files.exists(logRejetPath, new LinkOption[]{LinkOption.NOFOLLOW_LINKS});

if (pathExists) {
    EmailAttachment attachment = new EmailAttachment();
    attachment.setPath(logRejetPath.toString());
    attachment.setDisposition(EmailAttachment.ATTACHMENT);
    attachment.setDescription("test");
    attachment.setName("test");
    email.attach(attachment);              
}
email.send();

Я точная электронная почта - это объект MultiPartEmail, созданный так:

MultiPartEmail email = new MultiPartEmail();

    try {
        email.setHostName(config.getSmtpHost()); 
        email.setSmtpPort(Integer.valueOf(config.getSmtpPort()));
        if (!config.getSmtpUser().isEmpty()) {
            email.setAuthenticator(
                    new DefaultAuthenticator(config.getSmtpUser(), config.getSmtpPwd()));
            email.setSSLOnConnect(true);
        } else {
            email.setSSLOnConnect(false);
        }
        email.setCharset("utf-8");
        email.setFrom("me@me.fr");
        email.setSubject("subjectforemail");
        email.setContent(this.getMessage(), "text/html");

        final String[] destinataires = config.getMailDestinataires().split(";");
        for (final String dest : destinataires) {
            email.addTo(dest);
        }

Каждый раз, когда с помощью этих различных методов для добавления вложения я получаю свою электронную почтус сообщением, но без вложения.Каждый раз переменная pathExists имеет значение ИСТИНА, и каждый раз у меня нет ошибок.

Спасибо за ваши будущие ответы и помощь.

РЕДАКТИРОВАТЬ: Решение найдено путем изменения этого:

MultiPartEmail email = new MultiPartEmail();

этим:

HtmlEmail email = new HtmlEmail();

1 Ответ

0 голосов
/ 13 декабря 2018

Решение найдено путем изменения этого:

MultiPartEmail email = new MultiPartEmail();

этим:

HtmlEmail email = new HtmlEmail();
...