javamail 发送激活邮件失败,求助

barneyt 2016-07-09 08:05:20
代码如下:
public static void sendMail(HttpServletRequest request,User user) throws Exception {
Properties props=new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.163.com");
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.auth", "true");
Session session=Session.getInstance(props);
session.setDebug(true);

MimeMessage message=new MimeMessage(session);

message.setFrom(new InternetAddress("账户@163.com"));//发件人地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));//收件人地址
message.setSubject("激活邮件");

MimeMultipart multipart=new MimeMultipart();


//邮件图片内容
MimeBodyPart imgPart=new MimeBodyPart();
String imgPath=WebUtils.class.getClassLoader().getResource("bo.jpg").getPath();
imgPath=URLDecoder.decode(imgPath,"utf-8");

DataHandler imgdh=new DataHandler(new FileDataSource(imgPath));
imgPart.setDataHandler(imgdh);
imgPart.setContentID("myimg");

//邮件附件内容
MimeBodyPart attachPart=new MimeBodyPart();
String attachPath=WebUtils.class.getClassLoader().getResource("bo.jpg").getPath();
attachPath=URLDecoder.decode(imgPath,"utf-8");

DataHandler attacdh=new DataHandler(new FileDataSource(attachPath));
attachPart.setDataHandler(attacdh);
attachPart.setContentID(new File(attachPath).getName());


//文字部分
MimeBodyPart textPart=new MimeBodyPart();
String url=request.getScheme()+"://"
+request.getServerName()+":"
+request.getServerPort()+request.getContextPath()+
"/servlet/ActiveServlet?id="+user.getId();
String data="欢迎你! "+user.getUsername()+"<br/>"+"请点击<a href='"+url+"'>"+url+"</a>进行激活!<br/>"+
"详细内容请阅读新手指南<br/>"+" <img width='600px' src='cid:myimg'";
textPart.setContent(data,"text/html");


//组合三部分内容

MimeMultipart multipart2=new MimeMultipart();
multipart2.addBodyPart(textPart);
multipart2.addBodyPart(imgPart);
multipart2.setSubType("related");

MimeBodyPart textPart2=new MimeBodyPart();
textPart2.setContent(multipart2);

multipart.addBodyPart(textPart2);
multipart.addBodyPart(attachPart);
multipart.setSubType("mixed");

message.setContent(multipart);

//发送邮件
Transport transport=session.getTransport();
transport.connect("账户@163.com","密码");//该账户开启了smtp服务

Transport.send(message);
transport.close();
}


运行后报错:
DEBUG: setDebug: JavaMail version 1.4.2
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 "smtp.163.com", port 25, isSSL false
220 163.com Anti-spam GT for Coremail System (163com[20141201])
DEBUG SMTP: connected to host "smtp.163.com", port: 25

EHLO 0:-PC
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFRdbhhUCa0xDrUUUUj
250-STARTTLS
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "coremail", arg "1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFRdbhhUCa0xDrUUUUj"
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5
AUTH LOGIN
334 dXNlcm5hbWU6
MTg4MzE5MjkyOTlAMTYzLmNvbQ==
334 UGFzc3dvcmQ6
bGFuZzE5MjU=
235 Authentication successful
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
七月 09, 2016 8:03:32 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet RegisterServlet threw exception
java.lang.RuntimeException: javax.mail.AuthenticationFailedException: failed to connect
at login.web.servlet.RegisterServlet.doGet(RegisterServlet.java:49)
at login.web.servlet.RegisterServlet.doPost(RegisterServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.mail.AuthenticationFailedException: failed to connect
at javax.mail.Service.connect(Service.java:322)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at javax.mail.Transport.send0(Transport.java:190)
at javax.mail.Transport.send(Transport.java:120)
at login.utils.WebUtils.sendMail(WebUtils.java:139)
at login.web.servlet.RegisterServlet.doGet(RegisterServlet.java:47)
... 15 more
...全文
84 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧