最近想写一个邮箱自动验证功能,在网上看了很多,写到自己上面出了很多问题,记录下来给后面的人一个参考
2016-08-06 23:46
639 查看
package com.app.tools; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail { // public static final String HOST = "mx3.qq.com"; public static final String HOST = "smtp.163.com"; public static final String PROTOCOL = "smtp"; public static final int PORT = 25; /*465 这是QQ的端口*/ public static final String FROM = "xxxxx@163.com";//发件人的email public static final String PWD = "xxxxxxx";//发件人密码 private static Session getSession() { Properties props = new Properties(); props.put("mail.smtp.host", HOST);//设置服务器地址 props.put("mail.store.protocol" , PROTOCOL);//设置协议 props.put("mail.smtp.port", PORT);//设置端口 props.put("mail.smtp.auth" , "true"); Authenticator authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(FROM, PWD); } }; Session session = Session.getDefaultInstance(props , authenticator); return session; } public static void send(String toEmail , String content) { Session session = getSession(); try { System.out.println("--send--"+content); // Instantiate a message Message msg = new MimeMessage(session); //Set message attributes msg.setFrom(new InternetAddress(FROM)); InternetAddress[] address = {new InternetAddress(toEmail)}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject("账号激活邮件"); msg.setSentDate(new Date()); msg.setContent(content,"text/html;charset=utf-8"); //Send the message Transport.send(msg); } catch (MessagingException mex) { mex.printStackTrace(); } } public static void main(String[] args) { new SendEmail().send("xxxxx@qq.com","dsfsdf"); System.out.println("success"); } }
请注意以下要点:
1、是否开启了认证,QQ邮箱、163邮箱均要开启认证2、javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25; //连接超时
解决参考:将这个属性的true加上引号,请奇葩的异常! 注意:如果没有这条属性,可能或抛出 需要认证异常(Required Authentication) 这个异常一般是由1、2造成的
3、在设置属性的时候,一定要注意弄清楚使用邮箱的地址和端口。 javax.mail.AuthenticationFailedException
QQ邮箱端口: mx3.qq.com 端口:465 163邮箱:smtp.163.com 端口:25 这是都是发送邮件时使用的smtp协议所用。如果是收邮件则用的是pop3协议,那又不一样了。这个请自行查找
4、
在使用QQ邮箱发送邮件的时候,出现这个异常。 查了一下,官方说法是发送太频繁所以被锁定了!目前还没有解决。明天试试看看能不能成功(未成功)
以上是几个容易出现的异常,解决之后,其他异常可根据具体抛出的信息解决!
相关文章推荐
- 最近想写一个邮箱自动验证功能,在网上看了很多,写到自己上面出了很多问题,记录下来给后面的人一个参考
- bootloader----自己写的,部分代码是参考网上的,转入pro模式后问题很多!
- 当发现一个问题自己会了,但网上能找到答案的时候是记录还是不记录呢?
- 最近一直被weblogic的问题搞的头都大了,这是我从网上down下来的一个tomcat配置的哥给大家分享下
- Python实现日志自动记录功能(一个思路代码,详细可以自己扩展)
- 最近写了一个红包雨的小功能,但感觉自己的js还有很多地方可以提高,望大神们可以帮忙指点一二
- Select 可编辑 - 完美支持各大主流浏览器 最近做项目有个select可编辑的需求,一时棘手,网上找了很多解决方案都不完美,没办法自己写了一个,经测试IE,FF,chrome都支持。特此拿出来
- 参考网上的一些struts2的action用法,自己写了一个Demo记录一下。
- 最近在为界面库中增加一个单独的换肤功能,自己记录下GDI渐变色的使用方法
- 自己最近做的一个关于自动进入飞行模式的经验分享
- 使用10.04过程中遇到了很多中文问题,都解决了,汇总下来供大家参考
- 最近开始学习ubuntu,想记录一下学习过程,也为在学习的朋友提供一个参考
- 为在telnet自己TCP服务器程序的界面上实现shell一样的自动补齐和历史记录的功能。
- 最近遇到问题不少,还真不好解决,记录下来,静下心的时候好好想想
- QT 全局变量所遇见的问题,以及参考网上的解决方法,做个总结,提醒自己
- 在网上找的一个Flex文件上传代码,记录下来,以后用到的时候可以马上能用:
- CSDN 上面一个指针问题(以前自己没有弄清)
- 为在telnet自己TCP服务器程序的界面上实现shell一样的自动补齐和历史记录的功能
- 最近一直处理数据库,真麻烦啊,把具体步骤写下来,供自己参考!
- 朋友的一个问题:Linux开机如何自动运行自己编写好的shell脚本