Spring boot 我无法使用我的应用程序配置电子邮件。我创建了一个单独的电子邮件实用程序,但出现以下错误

Spring boot 我无法使用我的应用程序配置电子邮件。我创建了一个单独的电子邮件实用程序,但出现以下错误,spring-boot,Spring Boot,我正试图连接gmail服务器,并希望发送电子邮件到同一个帐户的学习目的,但它抛出了这个例外 @Service public class EmailUtilImpl implements EmailUtil { @Autowired private JavaMailSender sender; @Override public void sendEmail(String toAddress, String subject, String body) {

我正试图连接gmail服务器,并希望发送电子邮件到同一个帐户的学习目的,但它抛出了这个例外

@Service
public  class EmailUtilImpl implements EmailUtil {

    @Autowired
    private JavaMailSender sender;

    @Override
    public void sendEmail(String toAddress, String subject, String body)
    {
        MimeMessage message= sender.createMimeMessage();
        MimeMessageHelper helper= new MimeMessageHelper(message);
        try {
            helper.setTo(toAddress);
            helper.setSubject(subject);
            helper.setText(body);
        }
        catch(MessagingException e)
        {
            e.printStackTrace();
        }
        sender.send(message);
    }
}

错误:


出现意外错误(类型=内部服务器错误, 状态=500)。邮件服务器连接失败;嵌套异常是 com.sun.mail.util.MailConnectException:无法连接到主机, 端口:smtp.gmail.com,587;超时-1;嵌套异常是: java.net.SocketException:权限被拒绝:连接。失败消息: com.sun.mail.util.MailConnectException:无法连接到主机, 端口:smtp.gmail.com,587;超时-1;嵌套异常是: java.net.SocketException:权限被拒绝:连接


尝试以下属性

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: <YOUR_EMAIL_ADDRESS>
    password: <YOUR_EMAIL_PASSWORD>
    properties:
      mail:
        smtp:
          starttls:
            enable: true
            required: true
          auth: true
spring:
邮寄:
主机:smtp.gmail.com
港口:587
用户名:
密码:
特性:
邮寄:
smtp:
标准:
启用:true
必填项:true
作者:是的

尝试使用以下属性

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: <YOUR_EMAIL_ADDRESS>
    password: <YOUR_EMAIL_PASSWORD>
    properties:
      mail:
        smtp:
          starttls:
            enable: true
            required: true
          auth: true
spring:
邮寄:
主机:smtp.gmail.com
港口:587
用户名:
密码:
特性:
邮寄:
smtp:
标准:
启用:true
必填项:true
作者:是的

其他可能的解决办法

  • 将端口更改为465
  • 禁用防火墙/防病毒软件,然后重新运行
  • 在主应用程序中添加java.net.preferIPv4Stack

    System.setProperty("java.net.preferIPv4Stack", "true")
    

其他可能的解决办法

  • 将端口更改为465
  • 禁用防火墙/防病毒软件,然后重新运行
  • 在主应用程序中添加java.net.preferIPv4Stack

    System.setProperty("java.net.preferIPv4Stack", "true")
    


请提供完整的堆栈跟踪。出现意外错误(类型=内部服务器错误,状态=500)。邮件服务器连接失败;嵌套异常为com.sun.mail.util.MailConnectException:无法连接到主机,端口:smtp.gmail.com,587;超时-1;嵌套异常为:java.net.SocketException:权限被拒绝:连接。失败邮件:com.sun.mail.util.MailConnectException:无法连接到主机,端口:smtp.gmail.com,587;超时-1;嵌套异常为:java.net.SocketException:权限被拒绝:connectHello@Springsecurity是否在
应用程序中配置了邮件属性。属性
@PatelRomil是的,我已配置,请参见下面的注释。@Springsecurity是我的密码是使用App Password生成的。请提供完整的堆栈跟踪。存在意外错误(类型=内部服务器错误,状态=500)。邮件服务器连接失败;嵌套异常为com.sun.mail.util.MailConnectException:无法连接到主机,端口:smtp.gmail.com,587;超时-1;嵌套异常为:java.net.SocketException:权限被拒绝:连接。失败邮件:com.sun.mail.util.MailConnectException:无法连接到主机,端口:smtp.gmail.com,587;超时-1;嵌套异常为:java.net.SocketException:权限被拒绝:connectHello@Springsecurity您是否在
应用程序中配置了邮件属性。属性
@PatelRomil是的,我已配置,请参见下面的注释。@Springsecurity是我的密码是使用应用程序密码生成的,我已在应用程序属性中尝试过spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=myemail spring.mail.password=mypassword spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true#其他属性spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.connectiontimeout=5000 spring.mail.properties.mail.smtp.timeout=5000 spring.mail.properties.mail.smtp.writetimeout=5000您使用的凭据是否正确?它显示权限被拒绝我在应用程序属性spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=mymail-spring.mail.password=mypassword-spring.mail.properties.mail.smtp.starttls.enable=true-spring.mail.properties.mail.smtp.starttls.required=true#其他属性spring.mail.properties.mail.smtp.auth=true-spring.mail.properties.mail.smtp.connectiontimeout=5000-spring.mail.properties.mail.smtp.timeout=5000-spring.mail.properties.mail.smtp.writetimeout=5000您使用的凭据是否正确?它显示权限deniedspring.mail.properties.mail.smtp.auth=true-spring.mail.properties.mail.smtp.socketFactory.port=465-spring.mail.properties.mail.smtp.smtp.socketFactory.class=javax.net.ssl.sslsocketFactory-spring.mail.properties.mail.smtp.socketFactory.fallback=False上述配置对我有效感谢Patel Romil的努力@Yogesh Prajapati..不仅需要更改端口,还需要添加这两个属性javax.net.ssl.SSLSocketFactoy,fallback=false将起作用。@Springsecurity我很高兴您已经解决了这个问题spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.socketFactory.port=465 spring.mail.properties.mail.mail.mail.smtp.smtp.smtp.socketFactory.class=javax.net.ssl.sslsocketFactory spring.mail.properties.mail.smtp.socketFactory.fallback=上述问题配置对我有效感谢您的努力Patel Romil@Yogesh Prajapati..不仅需要更改端口,还需要添加这两个属性javax.net.ssl.SSLSocketFactoy,fallback=false将起作用。@Springsecurity我很高兴您解决了这个问题