01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件

【工程截图】

【代码实现】

【Mail.java】

package com.Higgin.Utils;

import java.util.ArrayList;
import java.util.List;

/**
 * 表示邮件类,你需要设置:账户名和密码、收件人、抄送(可选)、暗送(可选)、主题、内容,以及附件(可选)
 *
 * 在创建了Mail对象之后
 * 可以调用它的setSubject()、setContent(),设置主题和正文
 * 也可以调用setFrom()和 addToAddress(),设置发件人,和添加收件人。
 * 也可以调用addAttch()添加附件
 * 创建AttachBean:new AttachBean(new File("..."), "fileName");
 */
public class Mail {
    private String from;  //发件人
    private StringBuilder toAddress = new StringBuilder();  //收件人
    private StringBuilder ccAddress = new StringBuilder();  //抄送
    private StringBuilder bccAddress = new StringBuilder();  //暗送

    private String subject;//主题
    private String content;//正文

    // 附件列表
    private List<AttachBean> attachList = new ArrayList<AttachBean>();

    public Mail() {}

    public Mail(String from, String to) {
        this(from, to, null, null);
    }

    public Mail(String from, String to, String subject, String content) {
        this.from = from;
        this.toAddress.append(to);
        this.subject = subject;
        this.content = content;
    }

    /**
     * 返回发件人
     * @return
     */
    public void setFrom(String from) {
        this.from = from;
    }

    /**
     * 返回发件人
     * @return
     */
    public String getFrom() {
        return from;
    }

    /**
     * 返回主题
     */
    public String getSubject() {
        return subject;
    }

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

    /**
     * 获取主题内容
     */
    public String getContent() {
        return content;
    }

    /**
     * 设置主题内容
     * @param content
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 获取收件人
     * @return
     */
    public String getToAddress() {
        return toAddress.toString();
    }

    /**
     * 获取抄送
     * @return
     */
    public String getCcAddress() {
        return ccAddress.toString();
    }

    /**
     * 获取暗送
     * @return
     */
    public String getBccAddress() {
        return bccAddress.toString();
    }

    /**
     * 添加收件人,可以是多个收件人
     * @param to
     */
    public void addToAddress(String to) {
        if(this.toAddress.length() > 0) {
            this.toAddress.append(",");
        }
        this.toAddress.append(to);
    }

    /**
     * 添加抄送人,可以是多个抄送人
     * @param cc
     */
    public void addCcAddress(String cc) {
        if(this.ccAddress.length() > 0) {
            this.ccAddress.append(",");
        }
        this.ccAddress.append(cc);
    }

    /**
     * 添加暗送人,可以是多个暗送人
     * @param bcc
     */
    public void addBccAddress(String bcc) {
        if(this.bccAddress.length() > 0) {
            this.bccAddress.append(",");
        }
        this.bccAddress.append(bcc);
    }

    /**
     * 添加附件,可以添加多个附件
     * @param attachBean
     */
    public void addAttach(AttachBean attachBean) {
        this.attachList.add(attachBean);
    }

    /**
     * 获取所有附件
     * @return
     */
    public List<AttachBean> getAttachs() {
        return this.attachList;
    }
}

【AttachBean.java】

package com.Higgin.Mail.Utils;

import java.io.File;
/**
 * 发送附件用
 */
public class AttachBean {
    private String cid;
    private File file;
    private String fileName;

    public String getCid() {
        return cid;
    }

    public void setCid(String cid) {
        this.cid = cid;
    }

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public AttachBean() {

    }

    public AttachBean(File file, String fileName) {
        super();
        this.file = file;
        this.fileName = fileName;
    }
}

【MailUtils.java】

package com.Higgin.Utils;

import java.io.IOException;
import java.util.List;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/**
 * 邮件工具类
 * @author YH
 *
 */
public class MailUtils {
    public static Session createSession(String host, final String username, final String password) {
        Properties prop = new Properties();
        prop.setProperty("mail.host", host);        // 指定主机
        prop.setProperty("mail.smtp.auth", "true"); // 指定验证为true

        // 创建验证器
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        };

        // 获取session对象
        return Session.getInstance(prop, auth);
    }

    /**
     * 发送指定的邮件
     *
     * @param mail
     */
    public static void send(Session session, final Mail mail) throws MessagingException,
            IOException {

        MimeMessage msg = new MimeMessage(session);// 创建邮件对象
        msg.setFrom(new InternetAddress(mail.getFrom()));// 设置发件人
        msg.addRecipients(RecipientType.TO, mail.getToAddress());// 设置收件人

        // 设置抄送
        String cc = mail.getCcAddress();
        if (!cc.isEmpty()) {
            msg.addRecipients(RecipientType.CC, cc);
        }

        // 设置暗送
        String bcc = mail.getBccAddress();
        if (!bcc.isEmpty()) {
            msg.addRecipients(RecipientType.BCC, bcc);
        }

        msg.setSubject(mail.getSubject());// 设置主题

        MimeMultipart parts = new MimeMultipart();// 创建部件集对象

        MimeBodyPart part = new MimeBodyPart();// 创建一个部件
        part.setContent(mail.getContent(), "text/html;charset=utf-8");// 设置邮件文本内容
        parts.addBodyPart(part);// 把部件添加到部件集中

        ///////////////////////////////////////////

        // 添加附件
        List<AttachBean> attachBeanList = mail.getAttachs();// 获取所有附件
        if (attachBeanList != null) {
            for (AttachBean attach : attachBeanList) {
                MimeBodyPart attachPart = new MimeBodyPart();// 创建一个部件
                attachPart.attachFile(attach.getFile());// 设置附件文件
                attachPart.setFileName(MimeUtility.encodeText(attach
                        .getFileName()));// 设置附件文件名
                String cid = attach.getCid();
                if(cid != null) {
                    attachPart.setContentID(cid);
                }
                parts.addBodyPart(attachPart);
            }
        }

        msg.setContent(parts);// 给邮件设置内容
        Transport.send(msg);// 发邮件
    }
}

【MailUtilsTest.java】测试类

package com.Higgin.Mail.Demo;

import java.io.IOException;
import javax.mail.MessagingException;
import javax.mail.Session;
import org.junit.Test;

import com.Higgin.Mail.Utils.Mail;
import com.Higgin.Mail.Utils.MailUtils;

public class MailUtilsTest {
    /*** 发邮件
     * @throws IOException
     * @throws MessagingException ***/
    @Test
    public void sendMail() throws MessagingException, IOException{
        /**
         * 1.登录邮件服务器
         *     MailUtils.createSession(服务器地址,登录名,密码);
         * 2.创建邮件对象
         *     发件人
         *     收件人
         *     主题
         *     正文
         * 3.发邮件
         *     需要第1步得到的session 以及 第2步的邮件对象
         */

        Session session=MailUtils.createSession("smtp.163.com", "cuixinjie1993", "cuixinjie520");
        //public Mail(String from, String to, String subject, String content)
        Mail mail=new Mail("[email protected]","[email protected]","测试邮件标题啊","邮件内容啊");
        //发送
        MailUtils.send(session, mail);
    }
}
时间: 2024-10-10 15:42:15

01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件的相关文章

Android Studio快速创建常用工具类的插件Utils

现如今Android开发,开发工具Android Studio已成为主流,而为Android Studio打造的插件也越来越多,今天为大家介绍一个快速创建常用工具类的插件Utils.其实Android中有关工具类的库有很多,但我们开发中一般只会用到某个库的一个或几个类,所以这时候Utils就有了很大的优势了,它直接创建自己所需要的工具类,而且每个工具类是相互解耦的.下面,我们就来一起看看它的集成及使用. 首先,我们看一下集成方式 下载jar包导入1.下载最新jar包Utils.jar-v1.32

Java——用户激活邮件工具类

我们经常遇到在网站或者软件注册新用户时需要向我们的注册邮箱发送一封激活邮件,然后我们去邮箱点击激活连接后我们的用户名才能登陆,其过程是当我们注册成功后数据库已经存入该用户的相关信息,但是用户状态为不可用,所以这时候该用户名是不能正常使用的.因此系统需要向我们的注册邮箱发一封激活邮件,我们点击激活连接后系统会将数据库中用户状态字段更改为可用状态,至此用户激活成功,该用户可以正常使用.下面是实现过程: 为了方便起见我们还是编写一个发送邮箱工具类. <span style="font-famil

Java邮件工具类

首先封装邮件实体,协议采用SMTP: import java.util.List; import javax.mail.internet.InternetAddress; /**  * 邮箱实体类  * @author Administrator  *  */ public class EmailInfo { // 邮箱对应SMTP的服务器的地址 private String smtpHost; // 邮箱的用户名 private String user; private String pass

发送邮箱验证信息的工具类

package cn.itcast.travel.util; import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Properties; /** * 发邮件工具类 */public final class MailUtils { private static final String USER = "[email

工具类-发送邮件(通过JavaMail发送)

前段时间在工作中用到了邮件发送监控的报警信息,今天在这个记录一下JavaMail的邮件工具类. 下边为用到的JavaMail的jar包的pom依赖.这里用的是JavaMail的1.4.6的版本. <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.6</version> </dependency&g

自己封装————验证码工具类————

下面分享的是我自己封装的验证码工具类,在平时的项目中会比较经常用到的工具类,目前封装的这个工具类简易版的,如果有需要的伙伴可以拿去用,当然我建议用之前在配置文件里增加一些选项信息 //验证码宽度 private $width; //验证码高度 private $height; //验证的个数 private $length; //干扰点个数 private $dots; //干扰点的类型 private $type; //干扰线个数 private $lines; //文字 private $f

Android触摸事件(二)-TouchUtils,触摸辅助工具类

目录 目录 概述 关于拖动 原理 实现过程 关键变量定义 事件处理回调 偏移量计算 实现 关于缩放 原理 实现过程 缩放比例计算方法 事件处理回调 变量定义 缩放流程 关于辅助功能 使用方法 源码 概述 此类的主要作用是封装了一些触摸事件需要常用的操作,只需要实现简单的接口即可以使用.实现操作如下: 界面拖动(基于单点触摸的移动事件) 界面的缩放(基于两点触摸的移动事件) 此类只是一个辅助工具类,并不是必须的也不需要继承此类就可以使用. 此类基于AbsTouchEventHandle类回调的事件

浅谈:Hibernate中HibernateUtil工具类

首先我们需要知道为什么咱们要创建Hibernate工具类 一些固定而且经常使用的步骤我们期望做成一个工具类,以后再需要重复步骤时咱们仅需要引用此工具类就可以,从而避免了一直创建重复代码.比如加载数据库的驱动等,这里Hibernate中我们每个主程序都需要加载hibernate.cfg.xml文件.创建SessionFactory对象.创建Session对象.关闭session.这些都是固定化的步骤,因此我们将它们写在工具类HibernateUtil中,以后咱们直接引用此文件创建各对象即可,大大减

BeanUtil工具类的使用

BeanUtils的使用 1.commons-beanutils的介绍 commons-beanutils是Apache组织下的一个基础的开源库,它提供了对Java反射和内省的API的包装,依赖内省,其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致了大量的get/set代码堆积,增加了代码长度和阅读代码的难度,现在有了BeanUtils,我们对JavaBean属性的处理就方便很多. 2.BeanU