javamail实现邮箱验证代码记录

来源:互联网 发布:c语言游戏编程入门 编辑:程序博客网 时间:2024/06/05 22:37
package cn.tedu.tools;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SendEmail2 {
    private final static String HOST = "smtp.163.com";
    private final static String PORT = "25";
    private final static String PROTOCOL ="smtp";
    private final static String SENDER = "xxxx@163.com";
    private final static String SENDERPWD = "xxx";
    
    private SendEmail2(){}
    
    /**
     * 获取邮件发送的Session
     * @return
     */
    public 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(){
            public PasswordAuthentication getPasswordAuthentication(){
                return new PasswordAuthentication(SENDER,SENDERPWD);
            }
        };
        
        return Session.getDefaultInstance(props, authenticator);
    }

    /**
     * 发送邮件
     * @param receiver 收件箱
     * @throws MessagingException
     * @throws AddressException
     */
    public static void send(String receiver) throws Exception{
        
        System.out.println("-------开始发送-------");
        
        Session session = getSession();
        //获取代表邮件的对象
        Message message = new MimeMessage(session);
        
        //设置发件人,并对发件人的邮箱进行处理。
        message.setFrom(new InternetAddress(SENDER));
        
        //设置收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
        
        //设置邮件主题
        message.setSubject("fitness注册登录验证");
        
        //设置发送时间
        message.setSentDate(new Date());
        
        //获取MimePart,一个MimeBodyPart代表邮件的一个模块。
        MimeBodyPart text = new MimeBodyPart();
        
        //获取随机的验证消息 //TODO
        text.setContent("验证码:"+getContent()+"<img src='cid:1.jpg'>", "text/html;charset=utf-8");
        
        //获取一个图片消息添加图片
        MimeBodyPart image = new MimeBodyPart();
        
        //获取一个数据处理器,从数据源中获取数据
        //数据处理器自动感知数据类型
        DataHandler dh = new DataHandler(new FileDataSource("src/main/java/1.jpg"));
        //将dh传递在BodyPort中,
        image.setDataHandler(dh);
        image.setContentID("1.jpg");//将会挂载到<img>中
        
        //获取一个附件的mime消息
        MimeBodyPart attach = new MimeBodyPart();
        DataHandler dher = new DataHandler(new FileDataSource("src/main/java/2.jpg"));
        attach.setDataHandler(dher);
        //为附件设置文件文件名,将自动生成Content-Disposition这个头字段
        attach.setFileName(dher.getName());
        
        //设置两部分数据之间的关系
        MimeMultipart content = new MimeMultipart();
        content.addBodyPart(text);
        content.addBodyPart(image);
        content.setSubType("related");
        
        MimeBodyPart mbp = new MimeBodyPart();
        mbp.setContent(content);
        
        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(mbp);
        mm.addBodyPart(attach);
        mm.setSubType("mixed");
        
        message.setContent(mm);
        
        Transport.send(message);
        
        System.out.println("-------发送完成-------");
    }
    
    /**
     * 生产邮件内容
     * @return
     */
    public static String getContent(){
        
        
        return "你好";
    }
    
}

原创粉丝点击