Frage

Ich möchte Tausende von verschiedenen E-Mails an verschiedene Empfänger senden und möchte die Verbindung zu meinem SMTP öffnen und halten. Ich hoffe, dies ist schneller als die Verbindung für Ervy Mail erneut öffnen. Ich möchte Apache Commons E-Mail für das verwenden, könnte aber auf die Java-Mail-API zurückgreifen, wenn nötig.

Im Moment dieses Ich bin zu tun, was für eine schließt die Verbindung öffnet jedes Mal: ??

HtmlEmail email = new HtmlEmail();
email.setHostName(server.getHostName());
email.setSmtpPort(server.getPort());
email.setAuthenticator(new DefaultAuthenticator(server.getUsername(), server.getPassword()));
email.setTLS(true);
email.setFrom("test@example.com");
email.addTo(to);
email.setSubject(subject);
email.setHtmlMsg(htmlMsg);
email.send();
War es hilfreich?

Lösung

Hier ist meine Performance-Test-Klasse. die Mails eine Verbindung mit 4-mal schneller als die Verbindung jedes Mal wieder öffnen (was passiert, wenn Sie commons Mail verwenden). Die Leistung kann weiter vorangetrieben werden von mehreren Threads verwendet wird.

    Properties properties = System.getProperties();
    properties.put("mail.smtp.host", server);
    properties.put("mail.smtp.port", "" + port);

    Session session = Session.getInstance(properties);
    Transport transport = session.getTransport("smtp");

    transport.connect(server, username, password);

    for (int i = 0; i < count; i++) {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        InternetAddress[] address = {new InternetAddress(to)};
        message.setRecipients(Message.RecipientType.TO, address);

        message.setSubject(subject + "JavaMail API");
        message.setSentDate(new Date());

        setHTMLContent(message);
        message.saveChanges();
        transport.sendMessage(message, address);

    }

    transport.close();

Andere Tipps

Sie können Ihren früheren Code verwenden, aber die folgende fügen Sie die zugrunde liegende Session

zu bekommen
email.getMailSession();

Sie können zusätzliche hinzufügen Java-Mail-Eigenschaften von

email.getMailSession().getProperties().put(<key>, <value>);

Hier finden Sie aktuelle http: //java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html . Es ist ein Beispiel dafür, wie eine E-Mail zu senden. Sie sollten () auf dem Transport vor dem Aufruf der Nähe der Lage sein, mehr zu senden.

keine Notwendigkeit xtra-Code überhaupt, nur setzen Sie Ihre alle E-Mail-Empfänger und trennen mit Komma.

MimeMessage pesan = new MimeMessage(session); pesan.setFrom(new InternetAddress("email_from@host.com")); pesan.setRecipients(Message.RecipientType.TO, InternetAddress.parseHeader("first_email@host.com,second_email@host.com,dst_email@host.com",false));

und das gleiche tun für  Message.RecipientType.CC  und Message.RecipientType.BCC  wenn es mehr als 1 E-Mail-Empfänger hoffen, seine Hilfe:) ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top