我想向不同的收件人发送数千个不同的电子邮件,并希望打开与我的SMTP的连接并持有。我希望这更快,然后重新打开Ervy邮件的连接。我想为此使用Apache Commons电子邮件,但是如有必要,可以返回Java邮件API。

现在,我是这样做的,每次都打开了连接:

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();
有帮助吗?

解决方案

这是我的性能测试课。使用一个连接发送邮件的速度快4倍,然后每次重新打开连接(使用Commons Mail时会发生什么)。可以使用多个线程进一步推动性能。

    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();

其他提示

您可以使用较早的代码,但添加以下代码以获取基础会话

email.getMailSession();

您可以通过

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

看一下 http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html. 。有一个示例显示如何发送电子邮件。您应该能够在运输上致电Close()之前发送更多。

根本不需要XTRA代码,只需将所有电子邮件收件人放置并与逗号分开。

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));

并为同样的事情做 Message.RecipientType.CCMessage.RecipientType.BCC如果有1个以上的电子邮件收件人希望它的帮助:) ..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top