com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send ano

2528 단어
다음은 오피스 365를 사용하는 오류입니다.
내 구성:


#email
#SMTP 
spring.mail.host=xxxx
# 
spring.mail.username=xxxx
# , , SMTP/POP3 , 
spring.mail.password =xxxx
# 
spring.mail.default-encoding=UTF-8
#SMTP 
spring.mail.port=587
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=true
spring.mail.properties.mail.smtp.starttls.enable=true

 
자바로 Office365를 호출하여 메일을 보낼 때 다음과 같은 오류가 발생했습니다.
  com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
    at javax.mail.Transport.send0(Transport.java:195)
    at javax.mail.Transport.send(Transport.java:124)
    at com.paraview.mail.MailSender.sendTextMail(MailSender.java:60)
    at com.paraview.mail.Test.main(Test.java:10)

 
메일박스 구성은 다음과 같습니다.
SMTP 설정
서버 이름: smtp.outlook.cn
포트: 587
암호화 방법: TLS
나는 Foxmail을 통해 설정한 후에 정상적으로 메일을 받을 수 있는데, 왜 코드를 통해 안 됩니까?
메일박스 설정에서 암호화 방법을 볼 수 있습니다. TLS, TLS는 SSL이 아니기 때문에 제 설정에 프로필을 추가했습니다.put("mail.smtp.starttls.enable", "true");
그리고 계속 실행했는데 오류가 달라졌어요.
이 잘못은 또 무엇입니까?TLS를 통한 연결은 안되지만 분명 TLS잖아.인터넷에는 jdk1.6이어야 한다고 하는 블로그가 있는데 jdk1.7이면 안 된다고 합니다. 왠지 모르겠지만 아예 jdk버전을 바꿨어요.
결과의 오류는 여전하구나!
이럴 때 차라리 모든 설정을 다 넣고 어떤 효과를 보고 싶어서 다음과 같은 설정을 추가했습니다.
proper.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); proper.put("mail.smtp.socketFactory.port","587");         proper.put("mail.smtp.socketFactory.fallback", "false"); 
이때 오류가 변경되었습니다. SMTP 호스트에 연결할 수 없습니다. smtp.partner.outlook.cn, port: 587;578 포트가 연결되지 않는 이유는 포트는 틀림없이 문제없을 것입니다. 틀림없이 설정에 문제가 있을 것입니다
그래서 나는 또 설정을 추가했다.
      MailSSLSocketFactory sf = new MailSSLSocketFactory();        sf.setTrustAllHosts(true);  proper.put("mail.smtp.ssl.socketFactory", sf);
잘못은 여전하구나!이때 이미 토할 힘이 없어졌다. 계속 조사해 보자. 오류 중 하나는 이것이다.
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
이게 무슨 잘못이야?
그래서 내가 또 도도맘에게 물었더니 도도맘이 이 설정을 메일이라고 했어요.smtp.socketFactory.fallback은true로 바꿔야 합니다.
그래서 나는 프로필을 바꿨다.put("mail.smtp.socketFactory.fallback", "true");

좋은 웹페이지 즐겨찾기