java 发送邮件

来源:互联网 发布:js数组concat 编辑:程序博客网 时间:2024/06/07 16:14

内容发送邮件算是一个很常见的功能了。总结一下相关的知识点,算是做个笔记吧,也希望能帮到一些后来者吧,虽然,网上相关的一大堆。

发送邮件主要分三个步奏:

  1. 获取一个session 对象 ;
  2. 获取一个代表邮件的对象message ;
  3. 发送邮件;

代码 (能发送文件附件):

  • 发送邮件类:
   /** 1. @author 愚道 2.  */public class MailUtils {    Vector file = new Vector();    String filename = "";    /**     * 添加文件组件     *      * @param fileName     *            // 文件名称     */    public void attchFile(String fileName) {        file.addElement(fileName);    }    /**     * @param host     *            // stmp 服务器地址     * @param sendTo     *            // 收件人     * @param subject     *            // 主题     * @param context     *            // 内容     * @param code     *            // 激活码     * @param sendEmailName     *            // 发送人邮箱     * @param sendEmailPass     *            // 发送人密码     */    public void sendMail(String host, String sendTo, String subject,            String context, final String sendEmailName,            final String sendEmailPass) {        // 获取session 对象        Properties props = new Properties();        props.setProperty("mail.host", host);        Session session = Session.getInstance(props, new Authenticator() {            @Override            protected PasswordAuthentication getPasswordAuthentication() {                return new PasswordAuthentication(sendEmailName, sendEmailPass);            }        });        // 创建邮件对象 message        Message message = new MimeMessage(session);        try {            // 设置发件人            message.setFrom(new InternetAddress(sendEmailName));            // 收件人            message.addRecipient(RecipientType.TO, new InternetAddress(sendTo)); // 只是给一个人发邮件            // 邮件标题            message.setSubject("test!");            // 创建 Multipart 对象 ,一个 Multipart 包含一个或多个 bodyPart 对象,来组成邮件的正文内容(包括附件)。            Multipart mp = new MimeMultipart();            MimeBodyPart mbpContent = new MimeBodyPart();            // 邮件内容            mbpContent.setContent(context, "text/html;charset=UTF-8");            mp.addBodyPart(mbpContent);            // 文件附件            Enumeration efile = file.elements();            while (efile.hasMoreElements()) {                MimeBodyPart mbpFile = new MimeBodyPart();                filename = efile.nextElement().toString();                FileDataSource fds = new FileDataSource(filename);                mbpFile.setDataHandler(new DataHandler(fds));                String filename = new String(fds.getName().getBytes(), "UTF-8");                mbpFile.setFileName(MimeUtility.encodeText(filename));                mp.addBodyPart(mbpFile);            }            // 释放 file 文件            file.removeAllElements();            // 邮件内容            message.setContent(mp);            // 设置发送时间            message.setSentDate(new Date());            // 保存邮件            message.saveChanges();            // 发送邮件            Transport.send(message);        } catch (Exception e) {            e.printStackTrace();        }    }} 
  • 测试类 MailTest
/** * 邮件发送测试类 *  * @author 愚道 */public class MailTest {    private  String host = null; // stmp 服务器地址    private  String subject = null; // 主题    private  String context = null; // 内容    private  String sendEmailName = null; // 发件人邮箱    private  String sendEmailPass = null; // 发件人邮箱密码    private  String sendTo = null; // 收件人    // 发送邮件    public  void sendMail() {        // 读取配置文件获取发送邮件相关参数        Properties prop = new Properties();        InputStream in = MailUtils.class.getClassLoader().getResourceAsStream(                "mail.properties");        try {            prop.load(in);            host = prop.getProperty("mail.host");            subject = prop.getProperty("mail.subject");            context = prop.getProperty("mail.context");            sendTo = prop.getProperty("mail.sendTo");            sendEmailName = prop.getProperty("mail.sendEmailName");            sendEmailPass = prop.getProperty("mail.sendEmailPass");        } catch (IOException e) {        }        MailUtils mail = new MailUtils();        // 添加文件        mail.attchFile("C:\\Users\\jett_jiang\\Desktop\\情人节玫瑰花源码).html");        // 发送邮件        mail.sendMail(host, sendTo, subject, context, sendEmailName,                sendEmailPass);    }    public static void main(String[] args) {       MailTest test = new MailTest();       test.sendMail();    }}
  1. 邮箱配置文件:
mail.host=smtp.exmail.qq.commail.subject= testmail.context=testContextmail.sendEmailName=*********@qq.commail.sendEmailPass=***********mail.sendTo=396524472@qq.com

说明 :

  1. mail.host : stmp服务器类型,163 邮箱配置smtp.163.com。设置为QQ邮箱时请注意去开通STMP 功能。
0 0