邮件错误:javax.mail.AuthenticationFailedException: wrong password

这几天遇到一个问题,用javamail写的一个邮件发送程序,在163、126等邮箱进行收发测试时都没有问题,但偏偏用于收发客户的服务器上的邮件时,始终报密码错误这个错误(javax.mail.AuthenticationFailedException: wrong password)。用outlook express测试发现却完全没有问题。接收时报的错误如下:

DEBUG: setDebug: JavaMail version 1.3.1
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]
DEBUG POP3: connecting to host "mail.kingkey.com.cn", port 110
S: +OK POP3 on WebEasyMail [3.5.3.1] ready.  http://www.51webmail.com
C: USER [email protected]
S: +OK user accepted
C: PASS oa
S: -ERR wrong password
C: QUIT
S: +OK closing connection
09:51:06,859 ERROR [STDERR] javax.mail.AuthenticationFailedException: wrong password
09:51:06,859 ERROR [STDERR] 	at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:104)
09:51:06,859 ERROR [STDERR] 	at javax.mail.Service.connect(Service.java:255)
09:51:06,859 ERROR [STDERR] 	at javax.mail.Service.connect(Service.java:134)
......

 发送时报的错误如下:

DEBUG: setDebug: JavaMail version 1.3.1
get the session successful
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "mail.kingkey.com.cn", port 25

220 ESMTP on WebEasyMail [3.5.3.1] ready.  http://www.51webmail.com
DEBUG SMTP: connected to host "mail.kingkey.com.cn", port: 25

EHLO Tom
250-SIZE
250 AUTH LOGIN
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
b2FAa2luZ2tleS5jb20uY24=
334 UGFzc3dvcmQ6
b2E=
535 authentication failed.
10:56:59,093 ERROR [STDERR] javax.mail.AuthenticationFailedException
10:56:59,093 ERROR [STDERR] 	at javax.mail.Service.connect(Service.java:264)
10:56:59,093 ERROR [STDERR] 	at javax.mail.Service.connect(Service.java:134)
......

 

为什么用outlook express可以正常收发,而用javamail不行呢?搜了很久都搜不到答案,最后,干脆下了个网络包捕捉程序:sniffer,看看outlook express是怎么发送的。

 

捕捉后比较才发现,邮件的用户名不能用全名,如[email protected],这样会导致验证密码错误。而去掉用户全名后,如用:oa,这时邮件正常收发了!

 

一个小问题,搞了我3天,希望给以后有类似经历的朋友,少走点弯路。

你可能感兴趣的:(C++,c,C#,sun,idea)