javamail new MimeMessage зависает - PullRequest
0 голосов
/ 26 июня 2019

Если вы укажете правильные значения для emailSenderAddress и emailSenderPassword, этот фрагмент работает в режиме отладки в Netbeans и в командной строке. НО, если вы не добавите импорт DataHandler, он будет работать только в режиме отладки.

public class mailTest {

    // dummy DataHandler to be sure to keep the import !
    private DataHandler dh;

    private void prepareMessage() {
        java.util.Properties props = System.getProperties();
        props.put("mail.smtps.host", "smtp.gmail.com");
        props.put("mail.smtps.auth", "true");
        // simple class derived from Authenticator not relevant for the current discussion
        GMailAuthenticator auth = new GMailAuthenticator(<emailSenderAddress>, <emailSenderPassword>);
        javax.mail.Session session = javax.mail.Session.getInstance(props, auth);

        javax.mail.Message msg = new javax.mail.internet.MimeMessage(session);
        System.out.println("new MimeMessage ok !");

    }

    public static void main(String[] args) {
        mailTest mt = new mailTest();
        mt.prepareMessage();
    }
}

class GMailAuthenticator extends Authenticator {

    String user;
    String pw;

    public GMailAuthenticator(String username, String password) {
        super();
        this.user = username;
        this.pw = password;
    }

    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(user, pw);
    }
}

1 Ответ

0 голосов
/ 26 июня 2019

Какую версию JDK вы используете?DataHandler является частью API javax.activation (JavaBeans Activation Framework, aka JAF), который включен в JDK 8 и более ранние версии, но не в JDK 11. JavaMail нужен JAF, независимо от того, используете ли вы его явно в своей программе или нет.На JDK 11 вам нужно явно добавить его в ваш проект.Если у вас есть проект Maven, вы можете добавить зависимость com.sun.activation: javax.activation: 1.2.0 .

.
...