JSP中使用Javamail发送QQ邮件535错误,提示使用授权码登陆

a4654151 2016-05-30 03:30:30
完整的JSP代码:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<%@ page import="java.sql.*,java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<%
String qm ="vzgwjsznzunycbdj"; //您的QQ密码
String tu = "qq.com"; //你邮箱的后缀域名
String tto="3451233113@qq.com"; //接收邮件的邮箱
String ttitle="数据库密码修改成功通知信!操作人ip:";
String tcontent="您的密码已经被修改为:123456 请切记! 操作人ip:127.0.0.1 ,如不是您本人操作说明您的密码已经泄漏,请立即和我们联系! ! ";
Properties props=new Properties();
props.put("mail.smtp.host","smtp."+tu);//发信的主机,这里我填写的是我们公司的主机!可以不用修改!
props.put("mail.smtp.auth","true");
Session s=Session.getInstance(props);
s.setDebug(true);
MimeMessage message=new MimeMessage(s);
//给消息对象设置发件人/收件人/主题/发信时间
InternetAddress from=new InternetAddress("536770346@"+tu); //这里的115798090 改为您发信的QQ号
message.setFrom(from);
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(ttitle);
message.setSentDate(new Date());
//给消息对象设置内容


BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象
mdp.setContent(tcontent,"text/html;charset=gb2312");//给BodyPart对象设置内容和格式/编码方式
Multipart mm=new MimeMultipart();//新建一个MimeMultipart对象用来存放BodyPart对
//象(事实上可以存放多个)
mm.addBodyPart(mdp);//将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
message.setContent(mm);//把mm作为消息对象的内容
message.saveChanges();
Transport transport=s.getTransport("smtp");
transport.connect("smtp.exmail."+tu,"536770346",qm); //这里的115798090也要修改为您的QQ号码
transport.sendMessage(message,message.getAllRecipients());
transport.close();
%>

描述:已经开通了QQ邮箱的SMTP服务,也是用的最新的授权码登陆,还是显示以下的错误:


2016-5-30 15:21:53 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [jsp] in context with path [/jfree] threw exception [An exception occurred processing JSP page /index.jsp at line 36

33: message.setContent(mm);//把mm作为消息对象的内容
34: message.saveChanges();
35: Transport transport=s.getTransport("smtp");
36: transport.connect("smtp.exmail."+tu,"536770346",qm); //这里的115798090也要修改为您的QQ号码
37: transport.sendMessage(message,message.getAllRecipients());
38: transport.close();
39: %>


Stacktrace:] with root cause
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:103)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2476)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2465)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:619)
535 Error: 请使用授权码登录。详情请看: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
...全文
11114 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤胆刀客 2018-12-04
  • 打赏
  • 举报
回复
在邮箱设置里需要开启smtp服务,开启后会提供第三方平台登陆邮箱授权码,应该用这个授权码,而不是原始的邮箱密码
_文和_ 2018-02-09
  • 打赏
  • 举报
回复

这就可以了
qq_36090521 2017-08-04
  • 打赏
  • 举报
回复
多亏大佬挖坟!
qq_36090521 2017-08-04
  • 打赏
  • 举报
回复
11楼正解啊,折磨半天终于可以成功发送啦!多谢!
scopion_wang 2017-07-26
  • 打赏
  • 举报
回复
挖个坟,今天也遇到同样的问题了,最后解决了,给后来者一些解决方案 授权码获取问题解决参考如下: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256 SSL问题以及 failed to connect, no password specified?问题解决参考如下: http://www.cnblogs.com/15ho/p/5891148.html 我的代码如下(注意引入mail.jar包): import com.sun.net.ssl.internal.ssl.Provider; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.security.Security; import java.util.Date; import java.util.Properties; public class MailSender { private static MimeMessage message; public static void main(String[] args) throws MessagingException { Security.addProvider(new Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; //QQ邮箱服务器 String smtpHost="smtp.qq.com"; //邮箱用户名,即QQ账号 final String username = "QQ账号"; //邮箱授权码 final String password = "授权码"; //要发送到的邮箱 String to = "to@qq.com"; //自己的邮箱 String from = "from@qq.com"; Transport transport; Properties props = new Properties(); props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "465"); props.setProperty("mail.smtp.socketFactory.port", "465"); props.setProperty("mail.smtp.auth", "true"); props.put("mail.smtp.host",smtpHost); props.put("mail.smtp.username", username); props.put("mail.smtp.password", password); Session session = Session.getDefaultInstance(props, new Authenticator() { //身份认证 protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); InternetAddress[] addresses = {new InternetAddress(to)}; message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO,addresses); message.setSubject("Hello"); message.setSentDate(new Date()); message.setText("hello, How are you"); transport = session.getTransport("smtp"); transport.connect(smtpHost, username, password); transport.send(message); System.out.println("email has been sent"); } }
「已注销」 2017-06-19
  • 打赏
  • 举报
回复
遇到的问题 同9楼,竟然没有大神解决。。。。。
qq_16071447 2017-04-18
  • 打赏
  • 举报
回复
问题解决了吗?我163邮箱被当垃圾邮件处理,QQ要授权码登不上去
葡萄提子 2017-03-29
  • 打赏
  • 举报
回复
我是从163发到qq不行 但是163可以发163 的 qq发都发不出来啊 有授权码 还是没用
演员赵诗绎 2017-01-12
  • 打赏
  • 举报
回复
不过我163也有发成功的,就是不稳定
演员赵诗绎 2017-01-12
  • 打赏
  • 举报
回复
163动不动就视为垃圾邮件报554SPM:DT,我才来弄QQ邮箱的
当作看不见 2016-10-18
  • 打赏
  • 举报
回复
qq的有一个安全协议要实现ssl,这个不弄好,是没用的,我直接换163 邮箱,就可以了
qq_36437393 2016-10-18
  • 打赏
  • 举报
回复
没人知道原因吗?
耳朵没有冬 2016-09-26
  • 打赏
  • 举报
回复
同样,授权码已经写了,还是有问题
看风景的人lsy 2016-08-12
  • 打赏
  • 举报
回复
我也遇到了,授权码已经写了,可还是有问题
YiDianXiaoWenRou 2016-08-09
  • 打赏
  • 举报
回复
解决了吗 我也遇到了
适用人群通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。课程概述通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。。【开发者如何进行快速开发邮件发送系统???本课程系统进行快速研发,项目实战】 部分截图如下:完整版请查看课件或者视频

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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