您的位置:首页 > 编程语言 > Java开发

使用javaMail进行腾讯,新浪,网易网上邮箱验证

2017-08-05 11:26 495 查看
最近本人在开发web项目中,使用到了javaMail来进行邮箱验证。最初刚接触javaMail开发的时候,本人搜索很多有关这方面的知识和案例,比如慕课网上的课程,但那些都只是针对本地邮箱服务器或者单个网上邮箱服务器的案例,不能解决向多种格式的邮箱账号发送邮件的功能。在一番琢磨之后,本人终于实验成功,在这里也分享给各位,希望对没有接触过javaMail开发的小伙伴们提供一点帮助。

javaMail的开发通常只需要引入一个mail.jar包就ok了,jar包可以去下载javaMail的api解压之后得到,非常简单,推荐下载高版本的api,例如1.4.7版本的,因为有些低版本的不支持MailSSLSocketFactory,不能进行qq邮箱的使用。

ok,准备工作做完,接下来就是上代码啦!

import java.util.Properties;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;

import com.sun.mail.util.MailSSLSocketFactory;

public class MailUtil {

    public static boolean sendMail(String to, String code) throws Exception {

        //1.判断一下输入的邮箱账号是否符合规范,不符合规范就直接返回false

//这里列出了qq,网易,新浪的三种邮箱规范,需要向其他格式的邮箱发送邮件的话就在判断中添加即可

if (!(to.split("@")[1].equals("qq.com")

                || to.split("@")[1].equals("163.com")

                || to.split("@")[1].equals("sina.com")

                || to.split("@")[1].equals("sina.cn")

                || to.split("@")[1].equals("2008.sina.com")

                || to.split("@")[1].equals("51uc.com"))) {

            return false;

       }

        // 1.创建连接对象,连接到邮箱服务器

        Properties props = new Properties();

        // 开启debug调试

        props.setProperty("mail.debug", "true");

        // 发送服务器需要身份验证

        props.setProperty("mail.smtp.auth", "true");

        // 发送邮件协议名称

        props.setProperty("mail.transport.protocol", "smtp");

        Session session = null;

        // 设置邮件服务器主机名 

      //发送邮件的邮箱如果是qq邮箱,值就是
"smtp.qq.com",如果是网易邮箱,值就是"smtp.163.com",同理,新浪就是"smtp.sina.com",这里用qq邮箱做示例。


props.setProperty("mail.smtp.host", "smtp.qq.com");

        //qq邮箱不同于其它两种邮箱,它的使用需要进行ssl加密,
以下4行代码只有使用qq邮箱才用上


MailSSLSocketFactory sf = new MailSSLSocketFactory();

        sf.setTrustAllHosts(true);

        props.put("mail.smtp.ssl.enable", "true");

       props.put("mail.smtp.ssl.socketFactory", sf);

       

//同时,这儿设置的邮箱密码qq邮箱也是与其它两者不同的。我们知道,进行javaMail开发首先要对发件邮箱进行设置,需要在邮箱设置中允许stmp/pop3的使用。
//而qq邮箱则在你开启stmp/pop3使用的时候会给予你一个授权码,那才是真正在邮箱开发中使用的邮箱密码。(不得不说老马保密工作还是一流)


session = Session.getInstance(props, new Authenticator() {

            protected PasswordAuthentication getPasswordAuthentication() {

                return new PasswordAuthentication(

"你的邮箱账号",

                        "你的邮箱密码");

            }

        });

        // 2.创建邮件对象

        Message message = new MimeMessage(session);

        // 2.1设置发件人:

        message.setFrom(new InternetAddress("你的邮箱账号"));

        // 2.2设置收件人:

        message.setRecipient(RecipientType.TO, new InternetAddress(to));

        // 2.3设置邮件的主题

        message.setSubject("来自******的激活邮件");

        // 2.4设置邮件的正文

        message.setContent(

                "<h1>来自******的激活邮件,激活请点击以下链接</h1><h3><a href='"</a></h3>",

                "text/html;charset=UTF-8");

        // 3.发送一封激活邮件

        Transport.send(message);

        return true;

    }

}

至此,整个激活工作就算完成了,当用户收到邮件,点击了我们给出的url后,就能激活成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息