在不关闭连接的情况下在 Apache Camel 中发送批量电子邮件

Send bulk emails in Apache Camel without closing connection

Apache Camel Mail Component是否支持重用 TCP 连接来发送批量电子邮件?

如果不是,是不是feasible/recommendable写自定义org.apache.camel.component.mail.JavaMailSender来做?

我认为使用标准的 camel 邮件组件是不可能的,并且实现 JavaMailSender 也不会为您解决问题。

如果你看看 org.apache.camel.component.mail.MailProducer(2.13.0):

public void process(final Exchange exchange) {
try {
    MimeMessage mimeMessage;

    final Object body = exchange.getIn().getBody();
    if (body instanceof MimeMessage) {
        // Body is directly a MimeMessage
        mimeMessage = (MimeMessage) body;
    } else {
        // Create a message with exchange data
        mimeMessage = new MimeMessage(sender.getSession());
        getEndpoint().getBinding().populateMailMessage(getEndpoint(), mimeMessage, exchange);
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("Sending MimeMessage: {}", MailUtils.dumpMessage(mimeMessage));
    }
    sender.send(mimeMessage);
    // set the message ID for further processing
    exchange.getIn().setHeader(MailConstants.MAIL_MESSAGE_ID, mimeMessage.getMessageID());
} catch (MessagingException e) {
    exchange.setException(e);
} catch (IOException e) {
    exchange.setException(e);
}
}

只有 1 个消息或交换对象 send/handled。 因此,使用您需要的功能实施您自己的 "BulkMailComponent" 可能是适合您的解决方案。