【发布时间】:2023-03-18 16:35:01
【问题描述】:
我研究了以下问题和答案: Spring Boot - Could not connect to SMTP host: smtp.gmail.com, port: 25, response: 421
我想做同样的事情 - 使用 Gmail 服务器从 Spring Boot 应用程序发送电子邮件。
我的配置是这样的:
spring.mail.host = smtp.gmail.com
spring.mail.username = ***@otherdomain
spring.mail.password = ***
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
spring.mail.properties.mail.smtp.ssl.enable = true
这是从另一个问题中复制的,仅根据我的需要更改了用户名和密码。我的方案的唯一不同之处在于电子邮件地址的域不是 gmail.com。
我的电子邮件客户端课程是:
@Service
public class MailClient {
@Autowired
private JavaMailSender mailSender;
public void prepareAndSend(String recipient, String message) {
MimeMessagePreparator messagePreparator = mimeMessage -> {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
messageHelper.setFrom("staffing@readingbeerfestival.org.uk");
messageHelper.setTo(recipient);
messageHelper.setSubject("Sample mail subject");
messageHelper.setText(message);
};
mailSender.send(messagePreparator);
}
}
我的例外是:
Failed message 1: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. g78sm6788965wrd.11 - gsmtp
【问题讨论】:
-
您的意思是对于其他域,您使用具有自定义域的 Google for Work 帐户?还是该域与任何 Google 帐户完全无关?
-
这是我自己的域,其 MX 记录指向 Gmail。
-
您是否尝试指定
spring.mail.properties.mail.smtp.port=465? socketFactory.port 仅设置您的本地端口,而不是应该在 SMTP 服务器上使用的端口。
标签: java email spring-boot smtp gmail