【问题标题】:I am unable to configure email with my application i have created a separate email utility but following error is occurring我无法使用我的应用程序配置电子邮件我创建了一个单独的电子邮件实用程序,但出现以下错误
【发布时间】:2023-03-30 03:03:01
【问题描述】:

我正在尝试连接 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);
    }
}

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 # Other properties 
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

错误:

出现意外错误(类型=内部服务器错误, 状态=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:权限被拒绝:连接

【问题讨论】:

  • 请提供完整的堆栈跟踪。
  • 出现意外错误(类型=内部服务器错误,状态=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: Permission denied: connect
  • 你好@Springsecurity你在application.properties配置了邮件属性
  • @PatelRomil 是的,我已经配置了它,请在下面的评论中查看。
  • @Springsecurity is mypassword 是使用应用密码support.google.com/mail/answer/185833?hl=en生成的

标签: spring-boot


【解决方案1】:

试试下面的属性

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.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=true spring.mail.properties.mail .smtp.connectiontimeout=5000 spring.mail.properties.mail.smtp.timeout=5000 spring.mail.properties.mail.smtp.writetimeout=5000
  • 您是否使用了正确的凭据?它显示权限被拒绝
【解决方案2】:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username= yourAccount@gmail.com
spring.mail.password= generated App Password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

Generate App Password

其他可能的解决方案

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

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

【讨论】:

  • spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.socketFactory.port=465 spring.mail.properties.mail.smtp.socketFactory.class= javax.net.ssl.SSLSocketFactoy spring.mail.properties.mail.smtp.socketFactory.fallback=false
  • 上述配置对我有用,感谢您的努力 Patel Romil @Yogesh Prajapati ..
  • 不仅需要更改端口,而且添加这两个属性 javax.net.ssl.SSLSocketFactoy ,fallback=false 将起作用。
  • @Springsecurity 很高兴你解决了这个问题
猜你喜欢
  • 2010-12-20
  • 2017-01-27
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
相关资源
最近更新 更多