我有一个 Apache James 服务器,我可以通过 IMAP 而不是 SMTP 使用 Java Mail API 连接到它。这是我得到的错误:
Error sending message javax.mail.SendFailedException: Invalid Addresses; nested exception is: com.sun.mail.smtp.SMTPAddressFailedException: 530 5.7.1 Authentication Required
这就是我创建会话的方式
Session session = Session.getInstance(getMailServerProperties().getProperties());
特性
spring:
mail:
host: localhost
port: 25
properties.mail.smtp.auth: true
properties.mail.smtp.starttls.enable: true
properties.mail.imap.host: localhost
properties.mail.imap.port: 143
properties.mail.imap.starttls.enable: true
password: *****
连接代码
try(Transport transport = session.getTransport(SMTP)) {
transport.connect(getMailServerProperties().getHost(), Integer.valueOf(getMailServerProperties().getPort()).intValue(), username, password);
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
} catch (MessagingException e) {
LOGGER.info("Cause {}", e.getCause().getMessage());
LOGGER.error(ERROR_SENDING_MESSAGE_FOR_USER, username, e.getMessage());
throw new MessageSendException(e);
}
有任何想法吗?使用 Spring Boot 版本 2.5.4、Java 8 和 Apache James 的 dockerized 版本
谢谢