【问题标题】:Java Mail Authentication Failed ExceptionJava 邮件认证失败异常
【发布时间】:2022-07-18 17:24:17
【问题描述】:

我在使用 JavaMail 时遇到问题

javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials ru12-20020a17090b2bcc00b001cb6527ca39sm4977241pjb.0 - gsmtp

我在 application.properties 上的配置

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username={my email}
spring.mail.password={my password}
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

我在 Settings account.google.com 上阅读了一些解决方案,例如“打开不太安全的应用程序”,但那是旧文章,现在 google 不再允许使用此功能。

不知道怎么解决?

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:947) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:858) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:762) ~[jakarta.mail-1.6.7.jar:1.6.7]
at javax.mail.Service.connect(Service.java:342) ~[jakarta.mail-1.6.7.jar:1.6.7]
at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:518) ~[spring-context-support-5.3.15.jar:5.3.15]
at org.springframework.mail.javamail.JavaMailSenderImpl.testConnection(JavaMailSenderImpl.java:398) ~[spring-context-support-5.3.15.jar:5.3.15]
at org.springframework.boot.actuate.mail.MailHealthIndicator.doHealthCheck(MailHealthIndicator.java:42) ~[spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:82) ~[spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthIndicator.getHealth(HealthIndicator.java:37) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:77) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:40) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:130) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpointSupport.getAggregateContribution(HealthEndpointSupport.java:141) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:126) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:95) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:66) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:71) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:61) [spring-boot-actuator-2.6.3.jar:2.6.3]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_311]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_311]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_311]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_311]
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282) [spring-core-5.3.15.jar:5.3.15]
at org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(ReflectiveOperationInvoker.java:74) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation.invoke(AbstractDiscoveredOperation.java:60) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:121) [spring-boot-actuator-2.6.3.jar:2.6.3]
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:96) [spring-boot-actuator-2.6.3.jar:2.6.3]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) [na:1.8.0_311]
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) [na:1.8.0_311]
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) [na:1.8.0_311]
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) [na:1.8.0_311]
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) [na:1.8.0_311]
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) [na:1.8.0_311]
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) [na:1.8.0_311]
at sun.reflect.GeneratedMethodAccessor101.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_311]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_311]
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) [na:1.8.0_311]
at sun.rmi.transport.Transport$1.run(Transport.java:200) [na:1.8.0_311]
at sun.rmi.transport.Transport$1.run(Transport.java:197) [na:1.8.0_311]
at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_311]
at sun.rmi.transport.Transport.serviceCall(Transport.java:196) [na:1.8.0_311]
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) [na:1.8.0_311]
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) [na:1.8.0_311]
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) [na:1.8.0_311]
at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_311]
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) [na:1.8.0_311]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_311]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_311]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_311]

【问题讨论】:

  • 您是否按照错误消息中的建议阅读了support.google.com/mail/?p=BadCredentials 上的内容?
  • 是的,我确实遵循了,但它仍然没有通过身份验证
  • 你到底“关注”了什么?请具体说明您的尝试。
  • 你可能还需要spring.mail.properties.mail.smtp.starttls.required=true
  • 如今,Google 允许您为应用程序生成特定凭据。这优于使用“您自己的”帐户凭据

标签: java spring-boot smtp jakarta-mail


【解决方案1】:

不要使用 Gmail 登录密码,而是使用您的 Gmail 安全性中生成的应用密码。生成应用密码的步骤在这里。 https://www.techmazza.com/solve-java-mail-authentication-failed-exception-in-springboot/

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2023-03-10
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多