java - MailConnectException : Couldn't connect to host, 端口 : smtp. sendgrid.net

标签 java spring email smtp sendgrid

我已经为 sendGrid 创建了 API key :

enter image description here

我有以下 Spring 邮件配置:

spring.mail.default-encoding=UTF-8
spring.mail.host=smtp.sendgrid.net
spring.mail.username=apikey
spring.mail.password=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
spring.mail.port=25
spring.mail.protocol=smtp
spring.mail.test-connection=true

我有以下代码:

MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,
            MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED,
            StandardCharsets.UTF_8.name());
Template template = freemarkerConfig.getTemplate(templateFileName);
String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, props);

helper.setTo("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="89e4f0cce4e8e0e5c9eee4e8e0e5a7eae6e4" rel="noreferrer noopener nofollow">[email protected]</a>");
helper.setText(html, true);
helper.setSubject(subject);
helper.setFrom(from);
sender.send(message);
logger.debug("Send email to {} with subject: [{}]", Arrays.toString(to), subject);

然后我尝试启动应用程序并遇到以下错误:

27.01.18 20:07:20.460 [main] WARN  c.d.m.s.c.MailSenderValidatorAutoConfiguration - Mail server is not available
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.sendgrid.net, 25; timeout -1
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2118)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:712)
    at javax.mail.Service.connect(Service.java:366)
    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:501)
    at org.springframework.mail.javamail.JavaMailSenderImpl.testConnection(JavaMailSenderImpl.java:382)

我该如何解决这个问题?

附注

端口 587 一切正确

但我想使用 ssl 并设置 port=465

spring.mail.port=465

在这种情况下,我的应用程序在启动时卡住。打印 5 分钟后:

27.01.18 21:06:05.960 [main] WARN  c.d.m.s.c.MailSenderValidatorAutoConfiguration - Mail server is not available
javax.mail.MessagingException: Could not connect to SMTP host: smtp.sendgrid.net, port: 465, response: -1
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2106)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:712)
    at javax.mail.Service.connect(Service.java:366)
    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:501)
    at org.springframework.mail.javamail.JavaMailSenderImpl.testConnection(JavaMailSenderImpl.java:382)

如何避免这种情况?

最佳答案

我使用端口 2525(非特权)而不是 578(特权)在本地解决问题。我仍然可以使用云上的特权。这解决了我的问题。

关于java - MailConnectException : Couldn't connect to host, 端口 : smtp. sendgrid.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478360/

相关文章:

c# - 在电子邮件中发送表格

html - 如何访问或调用 "Send this form to others"?

php - 无法使用 PHPMailer 和 Mailtrap 发送邮件

java - String.valueOf() 与 Object.toString()

java - 循环中的打印语句重复多次

java - 在数组中声明 52 个图像图标的最简单方法是什么

java - 让静态方法负责创建它所在类的对象是否明智?

java - H2 嵌入式数据库在 spring boot 测试期间未获取属性

java - 如何允许基本自动配置类?当我有两个扩展它时,只有第一个被调用

java - Spring 外部化属性和 logback