`

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 = jadethao@163.com
#信件标题
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)  
        {  
        }  
    }  
 
}
这项目已经验证了,可以进行信息的发送。
分享到:
评论
1 楼 so_fast 2012-07-02  
host

相关推荐

    JavaMail 操作 总结

    JavaMail操作的总结

    封装javamail

    总结来说,封装javamail是为了简化邮件处理,通过创建自定义的邮件服务类,使得开发者能更便捷地发送和接收邮件。项目提供的`doc`文档、`lib`库文件和`demo`示例是学习和使用这个封装的关键资源。理解并实践这些内容...

    JavaEE5学习笔记04-JavaMail使用总结

    ### JavaEE5学习笔记04-JavaMail使用总结 在JavaEE5的学习过程中,JavaMail是一个非常重要的组件,它提供了发送、接收电子邮件的功能,并且能够与各种不同的邮件服务器进行交互。下面将根据提供的内容,详细解析...

    ant-javamail-1.6.4.jar.zip

    总结,"ant-javamail-1.6.4.jar.zip"是Apache Ant与JavaMail的一个整合包,提供了Ant对JavaMail的支持,使得开发者能够在构建流程中方便地处理邮件通信。正确理解和使用这个组件,能够提升项目管理和团队协作的水平...

    Javamail邮件开发系统教程

    ### JavaMail邮件开发系统教程知识点总结 #### 一、引言 JavaMail API是由Sun Microsystems为Java开发者提供的一套强大的邮件处理工具集。它支持多种邮件通信协议(如SMTP、IMAP、POP3等),并为Java应用程序提供了...

    SSM 框架 集成javamail

    总结,SSM框架集成JavaMail涉及的关键点有:添加JavaMail依赖、配置邮件服务器参数、创建邮件服务接口及其实现、初始化邮件会话、构建并发送邮件。通过这个过程,我们可以灵活地在SSM项目中实现邮件发送功能,增强...

    javaMail API和JAR

    总结来说,JavaMail API提供了一套完整的邮件操作接口,通过`Message`类构建邮件,`Transport`类发送邮件,以及`Store`类接收和管理邮件。`mail.jar`是实现这些功能的关键组件,包含所有必需的类和接口。在开发过程...

    javamail1_4_7

    总结来说,JavaMail 1.4.7 是一个强大的工具,让Java程序员能够轻松地与各种邮件服务器交互,实现邮件的发送、接收和管理。通过理解和运用这个库,开发者可以构建出功能完善的邮件应用程序,满足各种业务需求。在...

    怎么用JavaMail收取邮件

    总结来说,JavaMail 为开发者提供了一个强大且灵活的工具,用于在 Java 应用中处理邮件的发送和接收。通过理解 POP3 和 IMAP 协议,以及如何使用 JavaMail API,开发者可以轻松地构建出高效、安全的邮件应用。无论是...

    JavaMail 内存溢出问题

    总结,JavaMail 内存溢出问题主要源于邮件处理不当和资源管理不足。通过理解 JavaMail 源码,尤其是 `POP3Folder.java` 类的实现,我们可以找到优化点并采取相应的解决策略,如分批处理、及时关闭资源和调整缓存策略...

    JavaEE5学习笔记04-JavaMail使用总结---3

    对于本文提到的“JavaMail使用总结---3”,可能涵盖了更高级或特定的JavaMail用法,例如使用SSL/TLS加密通信、处理邮件附件、读取邮件、解析邮件头等。由于没有具体的博客内容,这部分无法提供详细讲解,但这些都是...

    JavaMail收发Gmail邮件

    ### JavaMail收发Gmail邮件知识点详解 ...#### 六、总结 通过以上步骤,我们可以使用JavaMail实现对Gmail邮件的收发功能,并且通过SSL加密技术确保了数据的安全传输。这对于开发涉及邮件处理的应用程序非常有用。

    javamail邮件管理系统

    总结来说,JavaMail邮件管理系统是通过JavaMail API利用SMTP和IMAP协议实现邮件的收发功能,它为开发者提供了一个强大且灵活的工具集,以构建高效、可靠的邮件应用。开发者可以根据需求扩展功能,如邮件过滤、自动...

    javamail 中文API文档

    #### 四、总结 JavaMail API为开发者提供了一套全面的工具集,使得在Java应用程序中集成电子邮件功能变得简单。通过理解上述核心概念及其用法,开发者可以轻松地开发出功能完善的电子邮件应用程序。

    JavaMail API基础教程(HTML)

    书名:JavaMail API基础教程(电子书) ...作者:IBM 目录 1.教程提示 2.引入JavaMail API 3.对相关协议的回顾 4.安装JavaMail 5.对核心类的概览 6.JavaMail API的使用 7.用SearchTerm(搜索条件)搜索 ...9.总结

    JavaMail简易教程

    #### 四、总结 JavaMail API为Java开发者提供了一个强大的工具集,可以轻松实现邮件的发送、接收和其他管理功能。通过结合不同的邮件协议,如SMTP、POP3、IMAP和MIME,JavaMail API能够满足各种邮件应用的需求。对于...

    JavaMail工具类

    总结来说,JavaMail工具类是Java开发中用于邮件服务的一个实用工具,通过封装JavaMail API,使得邮件发送过程更加简洁。开发者可以利用它轻松实现文本邮件、带附件的邮件以及多附件邮件的发送,同时,配合`mail....

    linux服务器报警—使用javamail

    总结起来,使用JavaMail在Linux服务器上发送报警邮件,需要理解JavaMail API的使用,配置SMTP服务器信息,以及在Java代码中正确设置邮件的各个属性。这样,当服务器出现问题时,运维人员可以第一时间收到通知,从而...

    邮箱验证--javamail的简单使用

    四、总结 JavaMail为Java开发者提供了强大且灵活的邮件处理能力,无论是简单的文本邮件还是包含附件的复杂邮件,都可以轻松处理。通过配置SMTP服务器参数,可以连接不同的邮件服务商,实现邮件的发送和接收。熟练...

    JavaMail邮件开发详解

    #### 四、总结 JavaMail API 提供了一个强大且灵活的框架,使得开发者能够在 Java 应用程序中轻松地实现邮件发送和接收功能。通过了解基本的概念、相关协议以及简单的使用案例,你可以快速上手并利用 JavaMail API ...

Global site tag (gtag.js) - Google Analytics