java-mail使用

package util;
/**
 *
 * @auter ssk
 * @apiNote 依赖 javamail activation
 *
 */

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;

public class Email {
     private  String myEmailAccount=null;  //发件用户名
     private  String myEmailPassword=null;  //授权码
     private  String myEmailSMTPHost=null;  //smtp.host
     private String myEmailPort=null;       //smtp端口
     private String subject="";             //主题
     private boolean isSsl=false;  //ssl
     private boolean debug=false;
     private Properties properties=null;  //javamail 配置
     private MimeMultipart mimeMultipart=null;
     private List<InternetAddress> to=new LinkedList<InternetAddress>();  //发送人
     private List<InternetAddress> cc=new LinkedList<InternetAddress>(); //抄送人
     private List<InternetAddress> bcc=new LinkedList<InternetAddress>(); //密送人
    public Email(String myEmailAccount, String myEmailPassword, String myEmailSMTPHost, String myEmailPort) {
        this();
        this.myEmailAccount = myEmailAccount;
        this.myEmailPassword = myEmailPassword;
        this.myEmailSMTPHost = myEmailSMTPHost;
        this.myEmailPort = myEmailPort;
    }
    public Email(){
        properties=new Properties();
        properties.put("mail.transport.protocol", "smtp");
        properties.put("mail.smtp.host", "smtp.qq.com");
        properties.put("mail.smtp.port", 25);
        properties.put("mail.smtp.auth", "true");
        myEmailAccount ="2***289498@qq.com"; 
        myEmailPassword="***lkzkjnpaxdjgd";  //必须是授权码
        myEmailSMTPHost="stmp.qq.com";
        myEmailPort="25";
    }
    public void setMyEmailAccount(String myEmailAccount) {
        this.myEmailAccount = myEmailAccount;
    }
    public void setMyEmailPassword(String myEmailPassword) {
        this.myEmailPassword = myEmailPassword;
    }
    public void setMyEmailSMTPHost(String myEmailSMTPHost) {
        this.myEmailSMTPHost = myEmailSMTPHost;
        properties.put("mail.smtp.host",this.myEmailSMTPHost);
    }
    public void setMyEmailPort(String myEmailPort) {
        this.myEmailPort = myEmailPort;
        properties.put("mail.smtp.port", myEmailPort);
    }
    public void setSsl(boolean ssl){
        if(ssl&&!isSsl)
        {
            /*开启ssl 不开启记得设置端口*/
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            properties.put("mail.smtp.socketFactory.fallback", "false");
            properties.put("mail.smtp.socketFactory.port", myEmailPort);
            /**/
        }else if(!ssl&&isSsl){

            properties.remove("mail.smtp.ssl.enable");
            properties.remove("mail.smtp.socketFactory.class");
            properties.remove("mail.smtp.socketFactory.fallback");
            properties.remove("mail.smtp.socketFactory.port");

        }

    }

    /**
     * @deprecated  设置主题
     * @param subject
     */
    public void setSubject(String subject) {
        this.subject = subject;
    }

    /**
     * @deprecated  是否开启debug
     * @param debug
     */
    public void setDebug(boolean debug) {
       if(this.debug!=debug){
           if(debug){properties.put("mail.debug", "true");}
           else properties.remove("mail.debug");
       }

    }

    /**
     * 设置内容
     * @param mimeMultipart
     */
    public void setMimeMultipart(MimeMultipart mimeMultipart) {
        this.mimeMultipart = mimeMultipart;
    }
    public String getMyEmailAccount() {
        return myEmailAccount;
    }
    public String getMyEmailPassword() {
        return myEmailPassword;
    }
    public String getMyEmailSMTPHost() {
        return myEmailSMTPHost;
    }
    public String getMyEmailPort() {
        return myEmailPort;
    }
    public String getSubject() {
        return subject;
    }
    public MimeMultipart getMimeMultipart() {
        return mimeMultipart;
    }
    public List<InternetAddress> getTo() {
        return to;
    }
    public List<InternetAddress> getCc() {
        return cc;
    }
    public List<InternetAddress> getBcc() {
        return bcc;
    }

    /**  MimeMultipart 转化MimeBodyPart */
    private MimeBodyPart toMimeBodyPart() throws MessagingException {
        MimeBodyPart old=new MimeBodyPart();
        old.setContent(mimeMultipart);
        return old;
    }
    /**
     * @deprecated  添加图片 cid 是图片指定
     * */
    public void addImage(String path) throws MessagingException {
        long id=new Date().getTime();
        MimeBodyPart text=new MimeBodyPart();
        text.setContent("<img src='cid:"+id+"'/>","text/html;charset=UTF-8");

        MimeBodyPart image=new MimeBodyPart();
        DataHandler dataImage= new DataHandler(new FileDataSource(path));
        image.setDataHandler(dataImage);
        image.setContentID(Long.valueOf(id).toString());

        MimeMultipart news =new MimeMultipart();
        news.addBodyPart(text);
        news.addBodyPart(image);
        news.setSubType("related");

        if(mimeMultipart!=null){
            MimeBodyPart text_img=new MimeBodyPart();
            text_img.setContent(news);

            MimeMultipart finally_=new MimeMultipart();
            finally_.addBodyPart(toMimeBodyPart());
            finally_.addBodyPart(text_img);
            finally_.setSubType("alternative");
            mimeMultipart=finally_;
        }else {
            mimeMultipart=news;
        }
    }
    /**添加文本*/
    public void addText(String text) throws MessagingException {
        MimeBodyPart texts=new MimeBodyPart();
        texts.setContent(text,"text/html;charset=UTF-8");
        if(mimeMultipart==null){
            mimeMultipart=new MimeMultipart();
            mimeMultipart.addBodyPart(texts);
            mimeMultipart.setSubType("alternative");
        }else {

            MimeMultipart news=new MimeMultipart();
            news.addBodyPart(toMimeBodyPart());
            news.addBodyPart(texts);
            news.setSubType("alternative");
            mimeMultipart=news;
        }


    }
    /**
     * @deprecated  添加附件
     *
     *
     * */
    public void addFile(String file) throws MessagingException {
        MimeBodyPart filee=new MimeBodyPart();
        DataHandler data=new DataHandler(new FileDataSource(file));
        filee.setDataHandler(data);
        filee.setFileName(new File(file).getName());

        if(mimeMultipart==null) {
            mimeMultipart=new MimeMultipart();
            mimeMultipart.addBodyPart(filee);
            mimeMultipart.setSubType("mixed");

        }else {
            MimeMultipart news=new MimeMultipart();
            news.addBodyPart(toMimeBodyPart());
            news.addBodyPart(filee);
            news.setSubType("mixed");
            mimeMultipart=news;
        }

    }
    /**添加发送人*/
    public void addTo(String account[]) throws AddressException {
        for(String ac:account){
            addTo(ac);
        }
    }
    public void addTo(String account) throws AddressException {
        to.add(new InternetAddress(account));
    }
    /**添加抄送人*/
    public void addCc(String account[]) throws AddressException {
        for(String ac:account){
            addCc(ac);
        }
    }
    public void addCc(String account) throws AddressException {
        cc.add(new InternetAddress(account));
    }
    public void addBcc(String account[]) throws AddressException {
        for(String ac:account){
            addBcc(ac);
        }
    }
    public void addBcc(String account) throws AddressException {
        bcc.add(new InternetAddress(account));
    }
    /**清除内容*/
    public void clear(){
        mimeMultipart=null;
    }
    /**发送*/
    public void sendMessage() throws MessagingException, IOException {
        Session session=Session.getInstance(properties);
        MimeMessage mimeMessage=new MimeMessage(session);
        mimeMessage.setSubject(subject);
        mimeMessage.setFrom(myEmailAccount);
        mimeMessage.setContent(mimeMultipart);
        mimeMessage.setRecipients(Message.RecipientType.TO,to.toArray(new InternetAddress[to.size()]));
        mimeMessage.setRecipients(Message.RecipientType.CC,cc.toArray(new InternetAddress[cc.size()]));
        mimeMessage.setRecipients(Message.RecipientType.BCC,bcc.toArray(new InternetAddress[bcc.size()]));
        to.clear();
        cc.clear();
        bcc.clear();
        mimeMessage.saveChanges();
        Transport transport=session.getTransport();
        transport.connect(myEmailAccount,myEmailPassword);
        transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
        transport.close();
    }


}

验证

package shop.register;

import util.Email;

import javax.mail.MessagingException;
import java.io.IOException;

public class SendEmail {
    private static SendEmail sendEmail;
    private static Email email;
    static {
        email=new Email();
        email.setMyEmailAccount("******@qq.com"); //设置发件人邮箱
        email.setMyEmailPassword("*****");  //设置授权码
        email.setMyEmailPort("465"); //端口
        email.setSsl(true); //开启ssl
        email.setSubject("验证码");
        email.setDebug(true);

    }
    public static SendEmail getInstance(){
        if(sendEmail==null) sendEmail=new SendEmail();
        return  sendEmail;
    }
    public  void send(String email,String random) throws MessagingException, IOException {
        SendEmail.email.addText(random);
        SendEmail.email.addTo(email);
        SendEmail.email.sendMessage();
        SendEmail.email.setMimeMultipart(null);
    }
    public  static void main(String args[]) throws IOException, MessagingException {
        SendEmail.getInstance().send("19766*****@qq.com","参数1");
        SendEmail.getInstance().send("19766*****@qq.com","参数2");
        SendEmail.getInstance().send("19766*****@qq.com","参数3");
    }

}

包下载地址:https://pan.baidu.com/s/4snnLYuL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值