javamail的总结

  Javamail邮件发送的总结:
    首先需要导入的jar包:两个分别是mail.jar和activation.jar。

邮件大致可以分三种:纯文本邮件、含有其他数据的文本邮件、含有附件的邮件。
下面我做了两个实验,源代码如下:
案例一
发送html形式的邮件:RemindMail.java
  package mocha.jlcm.mail.impl;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import mocha.jlcm.fore.dao.OvertimeTaskDao;

/**
* @author panyt 2011-11-01
*
* 发送html形式的邮件,
*/
public class RemindMail
{
    //邮箱服务器
    private String host;
    //发件人邮箱用户名
    private String username;
    //邮箱密码
    private String password ;
    //邮件标题名
    private String mail_head_name;
    //邮件标题名内容
    private String mail_head_value ;
    //收件人邮箱
    private String mail_to;
    //发件人邮箱
    private String mail_from;

    //信件标题
    private String mail_subject;
    //信件内容
    private String mailBody;
    //发件人的名称
    private String personalName;
    Properties properties = new Properties();
   
    OvertimeTaskDao dao;
public void setDao(OvertimeTaskDao dao) {
this.dao = dao;
}
   
    public RemindMail()
    {
     try {
properties.load(getClass().getResourceAsStream("/jlmail.properties"));
} catch (IOException e) {
e.printStackTrace();
}
   
    }
   
    /**
     * 读取配置文件jlemail.properties对应的值
     */
    public void getPropertiesValue(){
    host = properties.getProperty("host");
    username = properties.getProperty("username");
    password = properties.getProperty("password");
    mail_head_name = properties.getProperty("mail_head_name");
    mail_head_value = properties.getProperty("mail_head_value");
    mail_to = properties.getProperty("mail_to");
    mail_from = properties.getProperty("mail_from");
    mail_subject = properties.getProperty("mail_subject");
    //mail_body = properties.getProperty("mail_body");
    personalName = properties.getProperty("personalName");
    }

    /**
     * 此段代码用来发送普通电子邮件
     *
     * @deptId 责任部门id
     */
    public void send(String deptId) throws Exception
    {
       
        try
        {
            Properties props = new Properties(); // 获取系统环境
            Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证
            this.getPropertiesValue();
          // String manger = dao.getDeptName(deptId);
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true");
            Session session = Session.getDefaultInstance(props, auth);
           
            mailBody = this.getMailBody();
         // 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
            MimeMultipart mm = new MimeMultipart();
            // 新建一个存放信件内容的BodyPart对象
            BodyPart mdp = new MimeBodyPart();
            // 给BodyPart对象设置内容和格式/编码方式
            mdp.setContent(mailBody, "text/html;charset=utf-8");
            mm.setSubType("related");

            mm.addBodyPart(mdp);
         // 设置session,和邮件服务器进行通讯。
            MimeMessage message = new MimeMessage(session);
            message.setContent(mm); // 设置邮件格式
            message.setSubject(mail_subject); // 设置邮件主题
            //message.setText(mail_body); // 设置邮件正文
            message.saveChanges();
            message.setHeader(mail_head_name, mail_head_value); // 设置邮件标题
            message.setSentDate(new Date()); // 设置邮件发送日期
            Address address = new InternetAddress(mail_from, personalName);
            message.setFrom(address); // 设置邮件发送者的地址
           // 设置邮件接收方的地址
          //  Address toAddress = new InternetAddress(manger+mail_to);
            Address toAddress = new InternetAddress(mail_to);
            message.addRecipient(Message.RecipientType.TO, toAddress);
            Transport.send(message); // 发送邮件
            System.out.println("send ok!!!!!"+mail_to);
        } catch (Exception ex)
        {
            ex.printStackTrace();
            throw new Exception(ex.getMessage());
        }
    }

     /**
      * 邮件内容
     * @return
     */
    public String getMailBody(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     StringBuffer mail_body=new StringBuffer();
     mail_body.append("<html><head><title></title></head><body>");
     mail_body.append("<div>");
     mail_body.append("<div>");
     mail_body.append("XXX,您好!<br>");
     mail_body.append("&emsp;&emsp;根据XX系统统计,
                     请及时处理任务工作。具体待办任务<br>");
     mail_body.append("&emsp;如下:<br>");
     mail_body.append("<table  border='1' cellpadding='1' bordercolor='#000000' cellspacing='0' width='800'>");
     mail_body.append("<tr align='center'>");
     mail_body.append("<td>流程类型</td><td>所属流程</td><td>超时任务</td><td>状态</td><td>责任部门</td><td>预计处理时限(天)</td><td>实际已用时间(天)</td>");
     mail_body.append("</tr>");
     mail_body.append("<tr align='center'>");
     mail_body.append("<td>"+1+"</td>");
     mail_body.append("<td>"+2+"</td>");
     mail_body.append("<td>"+3+"</td>");
     mail_body.append("<td>"+4+"</td>");
     mail_body.append("<td>"+5+"</td>");
     mail_body.append("<td>"+6+"</td>");
     mail_body.append("<td>"+7+"</td>");
     mail_body.append("</tr>");
     mail_body.append("<table>");
     mail_body.append("<br><br><br>");
     mail_body.append("</div>");
     mail_body.append("<div>");
     mail_body.append("&nbsp;&nbsp;&nbsp;&nbsp;祝工作顺利!<br><br>");
     mail_body.append("PS:此邮件通过系统自动发送,请勿回复!<br>");
     mail_body.append("</div>");
     mail_body.append("<br><br>");
     mail_body.append("<div align=\"right\" style='width:800'>XXX(发送催办邮件人员姓名)</div><br>");
     mail_body.append("<div align=\"right\" style='width:800'>"+sdf.format(new Date())+"</div>");
     mail_body.append("</div>");
     mail_body.append("</body></html>");
    
     return  mail_body.toString();
     }
   
    /**
     * 用来进行服务器对用户的认证
     */
    public class Email_Autherticator extends Authenticator
    {
        public Email_Autherticator()
        {
            super();
        }

        public Email_Autherticator(String user, String pwd)
        {
            super();
            username = user;
            password = pwd;
        }

        public PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication(username, password);
        }
    }

    public static void main(String[] args)
    {
        RemindMail sendmail = new RemindMail();
        try
        {
            sendmail.send("");
        } catch (Exception ex)
        {
        }
    }

}
配置的属性文件:jlmail.properties

  #邮箱服务器
host = smtp.163.com
#发件人邮箱用户名
username = ***@163.com
# 邮箱密码
password = ********
#邮件标题名
mail_head_name = head mail
#邮件标题名内容
mail_head_value = head mail
#收件人邮箱
mail_to = *****@126.com
#发件人邮箱
mail_from = [email protected]
#信件标题
mail_subject = 提醒邮件
#信件内容
mailBody = 注意未办信息
#发件人的名称
personalName = XX领导
这项目已经验证了,可以进行信息的发送。

案例二:
带附件的邮件发送:

package com.mocha;  
 
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
* 准备好两个邮箱帐号 
* 这两个邮箱已经存在 可直接登录
*/
 
/** *//** 
* 发送普通邮件(带有附件),接受普通邮件 发送带有附件的邮件,接收带有附件的邮件 发送html形式的邮件,接受html形式的邮件 发送带有图片的邮件等做了一个总结。 
*/ 
public class MailMultiTest  
{  
    // 邮箱服务器  
    private String host = "smtp.163.com";  
    // 这个是你的邮箱用户名  
    private String username = "*****";  
    // 你的邮箱密码  
    private String password = "*****";  
      
    private String mail_head_name = "this is head of this mail";  
 
    private String mail_head_value = "this is head of this mail";  
 
    private String mail_to = "***@163.com";  
 
    private String mail_from = "*****@163.com";  
 
    private String mail_subject = "this is the subject of this test mail";  
 
    private String mail_body = "this is the mail_body of this test mail";  
 
    private String personalName = "发件人姓名";  
 
    public MailMultiTest()  
    {  
    }  
 
    /** *//** 
     * 此段代码用来发送普通电子邮件 
     */ 
    public void send() throws Exception  
    {  
        try 
        {  
            Properties props = new Properties(); // 获取系统环境  
            Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证  
            props.put("mail.smtp.host", host);  
            props.put("mail.smtp.auth", "true");  
            Session session = Session.getDefaultInstance(props, auth);  
            // 设置session,和邮件服务器进行通讯。  
            MimeMessage message = new MimeMessage(session);  
            // message.setContent("foobar, "application/x-foobar"); // 设置邮件格式  
            message.setSubject(mail_subject); // 设置邮件主题  
           // message.setText(mail_body); // 设置邮件正文  
            message.setHeader(mail_head_name, mail_head_value); // 设置邮件标题  
            message.setSentDate(new Date()); // 设置邮件发送日期  
            Address address = new InternetAddress(mail_from, personalName);  
            message.setFrom(address); // 设置邮件发送者的地址  
            Address toAddress = new InternetAddress(mail_to); // 设置邮件接收方的地址  
            message.addRecipient(Message.RecipientType.TO, toAddress); 
           
            String  attch1 = "G:/1.txt";
            String attch2 = "G:/2.txt";
           
            Multipart multipart = new MimeMultipart();
           
            //加入文本内容
            MimeBodyPart mimeBodyPart1 = new MimeBodyPart();
            mimeBodyPart1.setText("how are you !") ;
            multipart.addBodyPart(mimeBodyPart1) ;
           
            //加入第一个附件
            MimeBodyPart mimeBodyPart2 = new MimeBodyPart();
            FileDataSource fds = new FileDataSource(attch1);
            mimeBodyPart2.setDataHandler(new DataHandler(fds)) ;
            mimeBodyPart2.setDisposition(Part.ATTACHMENT) ;
            mimeBodyPart2.setFileName(fds.getName()) ;
            multipart.addBodyPart(mimeBodyPart2) ;
           
            //加入第二个附件
            MimeBodyPart mimeBodyPart3 = new MimeBodyPart();
             fds = new FileDataSource(attch2);
            mimeBodyPart3.setDataHandler(new DataHandler(fds)) ;
            mimeBodyPart3.setDisposition(Part.INLINE) ;
            mimeBodyPart3.setFileName(fds.getName()) ;
            multipart.addBodyPart(mimeBodyPart3) ;
           
            message.setContent(multipart) ;
           
            Transport.send(message); // 发送邮件  
            System.out.println("send ok!");  
        } catch (Exception ex)  
        {  
            ex.printStackTrace();  
            throw new Exception(ex.getMessage());  
        }  
    }  
 
    /** *//** 
     * 用来进行服务器对用户的认证 
     */ 
    public class Email_Autherticator extends Authenticator  
    {  
        public Email_Autherticator()  
        {  
            super();  
        }  
 
        public Email_Autherticator(String user, String pwd)  
        {  
            super();  
            username = user;  
            password = pwd;  
        }  
 
        public PasswordAuthentication getPasswordAuthentication()  
        {  
            return new PasswordAuthentication(username, password);  
        }  
    }  
 
    public static void main(String[] args)  
    {  
        MailMultiTest sendmail = new MailMultiTest();  
        try 
        {  
            sendmail.send();  
        } catch (Exception ex)  
        {  
        }  
    }  
 
}
这项目已经验证了,可以进行信息的发送。

猜你喜欢

转载自jadethao.iteye.com/blog/1234984