Электронная почта Apache Commons и повторное использование подключений SMTP

В настоящее время я использую Commons Email для отправки сообщений электронной почты, но мне не удалось найти способ обмена SMTP-соединениями между электронными письмами. послал. У меня есть следующий код:

    Email email = new SimpleEmail();
    email.setFrom("example@example.com");
    email.addTo("example@example.com");
    email.setSubject("Hello Example");
    email.setMsg("Hello Example");
    email.setSmtpPort(25);
    email.setHostName("localhost");
    email.send();

Он очень удобен для чтения, но работает медленно, когда я отправляю большое количество сообщений, что, как мне кажется, связано с дополнительными расходами на повторное подключение для каждого сообщения. Итак, я профилировал его с помощью следующего кода и обнаружил, что повторное использование транспорта делает вещи примерно в три раза быстрее.

    Properties props = new Properties();
    props.setProperty("mail.transport.protocol", "smtp");
    Session mailSession = Session.getDefaultInstance(props, null);
    Transport transport = mailSession.getTransport("smtp");
    transport.connect("localhost", 25, null, null);

    MimeMessage message = new MimeMessage(mailSession);
    message.setFrom(new InternetAddress("example@example.com"));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress("example@example.com"));
    message.setSubject("Hello Example");
    message.setContent("Hello Example", "text/html; charset=ISO-8859-1");

    transport.sendMessage(message, message.getAllRecipients());

Мне было интересно, есть ли способ заставить Commons Email повторно использовать SMTP-соединение для отправки нескольких электронных писем? Мне больше нравится Commons Email API, но его производительность оставляет желать лучшего.

Спасибо, Выкуп

6
задан centic 15 February 2013 в 08:57
поделиться