Je veux envoyer des milliers de courriels différents à différents destinataires et souhaiterions ouvrir la connexion à mon SMTP et le tenir. J'espère que cela est plus rapide, puis rouvrez la connexion pour Uervy Mail. J'aimerais utiliser l'e-mail Apache Commons pour cela, mais je pourrais revenir à l'API de la messagerie Java si nécessaire.
À l'heure actuelle, je fais cela, ce qui s'ouvre sur la connexion à chaque fois: P>
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();
3 Réponses :
regarder http: //java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html . Il y a un exemple montrant comment envoyer un email. Vous devriez être capable d'envoyer plus avant d'appeler Fermer () sur le transport. P>
Voici ma classe de test de performance. L'envoi des mails à l'aide d'une connexion est 4 fois plus rapide puis rouvrez la connexion à chaque fois (que se passe-t-il lorsque vous utilisez la messagerie Common). Les performances peuvent être poussées davantage en utilisant plusieurs threads.
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();
Vous pouvez utiliser votre code précédent, mais ajouter les éléments suivants pour obtenir la session sous-jacente Vous pouvez ajouter des propriétés de messagerie Java supplémentaires par P> email.getMailSession().getProperties().put(<key>, <value>);
Gardez la session ouverte et envoyez 1000 emails et enfin b> Fermer la session.
Savez-vous si cela est possible avec le courrier électronique des Commons?
Il ne semble pas que ça ... j'utilise JavaMail Full-Out.