美文网首页每天写1000字程序员IT在线课程
不知道怎么发送注册验证邮件?用JavaMail就对了

不知道怎么发送注册验证邮件?用JavaMail就对了

作者: 王大叔的土世界 | 来源:发表于2016-11-13 09:50 被阅读264次

    一、前期准备
    下载使用JavaMail时所需要用到的jar,包括activation.jar和javax.mail.jar(可以在百度上搜索JavaMail API以及JavaBeans activate framework进行下载)

    二、JavaMailAPI的几个核心类
    1.Javax.mail.Properties类
    由于JavaMail需要与邮件服务器进行通讯,所以程序需要知道是跟哪一个邮件服务器进行通讯,所以要为JavaMail提供目标服务器的服务器地址和端口号。而所有这些信息,都由Properties类封装和保存。

    Properties props = new Properties();
    props.put("mail.smtp.host",  smtp.163.com);
    props.put("mail.smtp.auth", true);
    props.put("mail.smtp.port", String.valueOf(25));
    

    2.Javax.mail.Session类
    关于这个类的作用,正式的解释是:Session定义了一个基本的邮件会话,任何工作都是基于这个Session的。
    我的解释:举种田的例子,要种地,首先要有田,没田种啥地啊?而Session就是这个田。

    Properties props = new Properties();
    Session session = Session.getInstance(props, null);
    

    3.Javax.mail.Message类
    Message就是我们要发送的具体的电子邮件。
    既然是电子邮件,那么就包括内容和主题。

    Session session = Session.getInstance(props, null);
    MimeMessage msg = new MimeMessage(session);
    msg.setText("content", "utf-8");
    msg.setSubject("subject", "utf-8");
    msg.setSentDate(new Date());
    

    4.Javax.mail.Address类
    既然是发邮件,那么发件人和收件人的邮箱地址必不可少,不然就算JavaMail再厉害,也是巧妇难为无米之炊啊。

    //创建收件人的Address数组,因为收件人可能不只一个,这里只有一个。
    Address[] toAddress = new InternetAddress[1];
    toAddress[0] = new InternetAddress("email");
    
    //创建发件人的Address类
    Address fromAddress = new InternetAddress("fromEmail");
    message.setFrom(fromAddress);
    

    5.Java.mail.Transport类
    邮件有了,地址也有了,那么谁来做发送的苦差事呢?就让我Transport类来完成吧。

    Transport.send(message);
    

    三、具体代码实现

    public class MailUtil {
      public static final int PORT = 25;//端口号
      public static final String SERVER = "smtp.163.com";//163邮箱的smtp服务器的地址
      public static final String FROM = "yourEmail@163.com";
      public static String username = "yourEmail@163.com";//发件人的邮件地址
      public static String password = "yourPassword";//发件人的密码
    
      public static void sendEmail(String email, String subject, String content) throws MessagingException{
            Properties props = new Properties();
            props.put("mail.smtp.host", SERVER);
            props.put("mail.smtp.port", String.valueOf(PORT));
            props.put("mail.smtp.auth", "true");
            Session session = Session.getInstance(props, null);
            Transport transport = null;
            //创建一个message来发送session,不过Message是一个抽象类,message就是邮件
            MimeMessage msg = new MimeMessage(session);
            Address[] toAddress = new InternetAddress[1];
            toAddress[0] = new InternetAddress(email);
            Address fromAddress = new InternetAddress(FROM);
            //指定邮件发出地址
            msg.setText(content, "utf-8");
            msg.setSubject(subject, "utf-8");
            msg.setSentDate(new Date());//设置发送邮件的时间
            msg.setFrom(fromAddress);
            //指定邮件接收地址
            msg.setRecipient(Message.RecipientType.TO, toAddress[0]);
            msg.saveChanges();//更新消息头部
            transport = session.getTransport("smtp");
            transport.connect(String.valueOf(SERVER), username, password);
            transport.sendMessage(msg, toAddress);
        }
    }
    

    4.突然就结局了
    当封装完MailUtil类之后,我们就可以愉快的在用户注册模块里调用了,是不是很有趣呢?(终于完了,吃个苹果先)


    如果觉得小鱼的文章不错的话,各位客官千万不要忘记点赞和评论哦!

    相关文章

      网友评论

        本文标题:不知道怎么发送注册验证邮件?用JavaMail就对了

        本文链接:https://www.haomeiwen.com/subject/djfcpttx.html