`
longgangbai
  • 浏览: 7326138 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Commom-email发送电子邮件

阅读更多

import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;


public class DMail {

 /**
  * 发送简单的email,不能添加附件
  */
 public static final int SIMPLEEMAIL = 1;
 /**
  * 文本邮件,可以添加多个附件
  */
 public static final int MULTIPARTEMAIL = 2;
 /**
  * HTML格式邮件,同时具有MultiPartEmail类所有“功能”
  */
 public static final int HTMLEMAIL = 3;
 
 /**
  * 发件人的地址
  */
 private String from_address = "";
 /**
  * 邮件标题
  */
 private String title = "";
 /**
  * 邮件内容
  */
 private String text = "";
 /**
  * 发送邮件服务器的信息
  */
 private String mail_smtp_host = "";
 /**
  * 发件人用户名
  */
 private String username = "";
 /**
  * 发件人密码
  */
 private String passwod = "";
 /**
  * mail发送方式
  */
 private int mail_type = 1;
 /**
  * 邮件附件列表
  */
 private ArrayList accessoriesList = new ArrayList();
 /**
  * 发送地址列表
  */
 private ArrayList to_addressList = new ArrayList();
 /**
  * 抄送地址列表
  */
 private ArrayList cc_to_addressList = new ArrayList();
 /**
  * 密送地址列表
  */
 private ArrayList bcc_to_addressList = new ArrayList();
 
 /**
  * 获取发件人的地址
  * @return
  */
 private String getFrom_address() {
  return from_address;
 }
 /**
  * 设置发件人的地址
  * @param from_address
  */
 public void setFrom_address(String from_address) {
  this.from_address = from_address;
 }
 /**
  * 获取smtp host主机地址
  * @return
  */
 private String getMail_smtp_host() {
  return mail_smtp_host;
 }
 /**
  * 设置smtp host主机地址
  * @param mail_smtp_host
  */
 public void setMail_smtp_host(String mail_smtp_host) {
  this.mail_smtp_host = mail_smtp_host;
 }
 /**
  * 获取发件人密码
  * @return
  */
 private String getPasswod() {
  return passwod;
 }
 /**
  * 设置发件人密码
  * @param passwod
  */
 public void setPasswod(String passwod) {
  this.passwod = passwod;
 }
 /**
  * 获取邮件内容
  * @return
  */
 private String getText() {
  return text;
 }
 /**
  * 设置邮件内容(支持HTML)
  * @param text
  */
 public void setText(String text) {
  this.text = text;
 }
 /**
  * 获取邮件标题
  * @return
  */
 private String getTitle() {
  return title;
 }
 /**
  * 设置邮件标题(主题)
  * @param title
  */
 public void setTitle(String title) {
  this.title = title;
 }
 /**
  * 获取发件人用户名
  * @return
  */
 private String getUsername() {
  return username;
 }
 /**
  * 设置发件人用户名
  * @param username
  */
 public void setUsername(String username) {
  this.username = username;
 }
 /**
  * 添加附件
  * @param path
  */
 public void AddAccessories(String path){
  EmailAttachment attachment = new EmailAttachment();
  attachment.setPath(path);
  attachment.setDisposition(EmailAttachment.ATTACHMENT);
  //文件描述
  attachment.setDescription("venustech");
  try {
   attachment.setName(MimeUtility.encodeText(path.substring(path.lastIndexOf("/")+1)));//解决中文字符问题
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }
  this.accessoriesList.add(attachment);
 }
 
 /**
  * 添加发送地址
  * @param path
  */
 public void Add_To_addressList(String path){
  String[] p = path.split(";");
  for(int i = 0 ; i < p.length;i++){
   if(p[i].equals("")){
    continue;
   }
   to_addressList.add(p[i]);
  }
 }
 /**
  * 添加抄送地址
  * @param path
  */
 public void Add_Cc_To_addressList(String path){
  String[] p = path.split(";");
  for(int i = 0 ; i < p.length;i++){
   if(p[i].equals("")){
    continue;
   }
   cc_to_addressList.add(p[i]);
  }
 }
 /**
  * 添加密送地址
  * @param path
  */
 public void Add_Bcc_To_addressList(String path){
  String[] p = path.split(";");
  for(int i = 0 ; i < p.length;i++){
   if(p[i].equals("")){
    continue;
   }
   bcc_to_addressList.add(p[i]);
  }
 }
 
 /**
  * 发送HTML格式邮件,可以添加多个附件
  * @return
  */
 private boolean sendHtmlEMail(){
  
  try {
   HtmlEmail email = new HtmlEmail();
   //smtp host
   email.setHostName(getMail_smtp_host());
   email.setCharset("UTF-8");
   //登陆邮件服务器的用户名和密码
   email.setAuthentication(getUsername(),getPasswod());
   //接收人
   //email.addTo(getTo_address(),getFrom_nickname());
   for(int i = 0 ; i < to_addressList.size();i++){
    email.addTo(((String)to_addressList.get(i)),((String)to_addressList.get(i)));
   }
   //抄送
   for(int i = 0 ; i < cc_to_addressList.size();i++){
    email.addCc(((String)cc_to_addressList.get(i)),((String)cc_to_addressList.get(i)));
   }
   //密送
   for(int i = 0 ; i < bcc_to_addressList.size();i++){
    email.addBcc(((String)bcc_to_addressList.get(i)),((String)bcc_to_addressList.get(i)));
   }
   //发送人
   email.setFrom(getFrom_address(),getFrom_address());
   //标题
   email.setSubject(getTitle());
   //邮件内容
   email.setHtmlMsg(getText());
   //添加附件(附件,可以定义多个附件对象)
   for(int i = 0; i < this.accessoriesList.size();i++){
    EmailAttachment attachment = (EmailAttachment)this.accessoriesList.get(i);
    email.attach(attachment);
   }
   //发送
   email.send();
  } catch (EmailException e) {
   return false;
  }
  return true;
 }
 /**
  * 发送文本邮件,可以添加多个附件
  * @return
  */
 private boolean sendMultipartEMail(){
  
  try {
   MultiPartEmail email = new MultiPartEmail();
   //smtp host
   email.setHostName(getMail_smtp_host());
   email.setCharset("UTF-8");
   //登陆邮件服务器的用户名和密码
   email.setAuthentication(getUsername(),getPasswod());
   //接收人
   //email.addTo(getTo_address(),getFrom_nickname());
   for(int i = 0 ; i < to_addressList.size();i++){
    email.addTo(((String)to_addressList.get(i)),((String)to_addressList.get(i)));
   }
   //抄送
   for(int i = 0 ; i < cc_to_addressList.size();i++){
    email.addCc(((String)cc_to_addressList.get(i)),((String)cc_to_addressList.get(i)));
   }
   //密送
   for(int i = 0 ; i < bcc_to_addressList.size();i++){
    email.addBcc(((String)bcc_to_addressList.get(i)),((String)bcc_to_addressList.get(i)));
   }
   //发送人
   email.setFrom(getFrom_address(),getFrom_address());
   //标题
   email.setSubject(getTitle());
   //邮件内容
   email.setMsg(getText());
   //添加附件(附件,可以定义多个附件对象)
   for(int i = 0; i < this.accessoriesList.size();i++){
    EmailAttachment attachment = (EmailAttachment)this.accessoriesList.get(i);
    email.attach(attachment);
   }
   //发送
   email.send();
  } catch (EmailException e) {
   return false;
  }
  return true;
 }
 
 
 /**
  * 发送简单邮件
  * @return
  */
 private boolean sendSimpleEMail(){
  SimpleEmail email = new SimpleEmail();
  //smtp host
  email.setHostName(getMail_smtp_host());
  email.setCharset("UTF-8");
  //登陆邮件服务器的用户名和密码
  try {
   email.setAuthentication(getUsername(),getPasswod());
   //接收人
   //email.addTo(getTo_address(),getFrom_nickname());
   for(int i = 0 ; i < to_addressList.size();i++){
    email.addTo(((String)to_addressList.get(i)),((String)to_addressList.get(i)));
   }
   //抄送
   for(int i = 0 ; i < cc_to_addressList.size();i++){
    email.addCc(((String)cc_to_addressList.get(i)),((String)cc_to_addressList.get(i)));
   }
   //密送
   for(int i = 0 ; i < bcc_to_addressList.size();i++){
    email.addBcc(((String)bcc_to_addressList.get(i)),((String)bcc_to_addressList.get(i)));
   }
   //发送人
   email.setFrom(getFrom_address(),getFrom_address());
   //标题
   email.setSubject(getTitle());
   //邮件内容
   email.setMsg(getText());
   //发送
   email.send();
  } catch (EmailException e) {
   e.printStackTrace();
   return false;
  }
  return true;
 }
 
 /**
  * 发送邮件
  * @return
  */
 public boolean sendEMail(){
  
  boolean result = false;
  if(this.getMail_type() == this.SIMPLEEMAIL){
   result = sendSimpleEMail();
  }else if(this.getMail_type() == this.MULTIPARTEMAIL){
   result = sendMultipartEMail();
  }else{
   result = sendHtmlEMail();
  }
  return result;
 }
 /**
  * 获取邮件发送类型
  * @return
  */
 public int getMail_type() {
  return mail_type;
 }
 /**
  * 设置邮件发送类型
  * @param mail_type
  */
 public void setMail_type(int mail_type) {
  this.mail_type = mail_type;
 }
 /**
  * 发送邮件的例子
  * @param args
  */
 public static void main(String [] args){
  
//  DMail dmail = new DMail();
//  /**/
//  dmail.setFrom_address("发件人地址");//完整邮箱
//  dmail.Add_To_addressList("收件人地址(列表)");//收件人邮箱地址(多个地址以;分割)
//  dmail.Add_Cc_To_addressList("抄送地址(列表)");
//  dmail.Add_Bcc_To_addressList("密送地址(列表)");
//  dmail.setTitle("邮件的标题信息");
//  dmail.setText("邮件内容");
//  dmail.setMail_smtp_host("smtp服务器地址");
//  dmail.setUsername("用户名");
//  dmail.setPasswod("密码");
//  /**/
//  
//  //简单邮件发送方式
//  dmail.setMail_type(DMail.SIMPLEEMAIL);
//  if(dmail.sendEMail()){
//   System.out.println("邮件发送成功");
//  }else{
//   System.out.println("邮件发送失败");
//  }
  
  /**发送带附件的邮件**
  dmail.setMail_type(DMail.MULTIPARTEMAIL);
  dmail.AddAccessories("c://response.txt");
  dmail.AddAccessories("c://12.txt");
  if(dmail.sendEMail()){
   System.out.println("邮件发送成功");
  }else{
   System.out.println("邮件发送失败");
  }/**/
 }
}

分享到:
评论

相关推荐

    AT_Commom-master_STM32F103_

    为了使用"AT_Commom-master",开发者首先需要了解目标模块的AT指令集,然后根据项目需求配置库中的参数,如串口波特率、校验位等。接着,通过库提供的API接口发送AT指令,处理返回的数据。在实际应用中,可能还需要...

    hadoop-commom-3.0.0.jar

    与hadoop有关的io文件在hadoop-commom-x.x.x.jar中如:org.apache.hadoop.io.LongWritable, org.apache.hadoop.io.IntWritable org.apache.hadoop.io.Text等,相关的conf配置文件也在该jar文件中

    commons-vfs2-2.2.1.6.jar

    commons-vfs2-2.2.1.6.jar

    hadoop-2.2.0依赖的jar包

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它提供了分布式存储和计算的能力。...通过使用hadoop-eclipse-plugin-2.2.0这样的开发工具,开发者可以更高效地利用Hadoop平台,实现大数据的高效处理和分析。

    apache-commons-vfs.jar

    jar包,亲测可用

    java apache common-io上传大文件报错

    在上述问题"java apache common-io上传大文件报错"中,开发者可能遇到了在使用Apache Commons IO进行大文件上传时遇到的一些挑战。这篇博客文章(虽然链接不可用)很可能讨论了这些问题及其解决方案。 Apache ...

    the-commom-warrior:一个关于一个普通战士的普通游戏

    这款2D游戏是使用C#在Unity上开发的。 您可以访问以下在线播放: : 游戏分为两个级别,您需要在其中收集右上角显示的所有菱形。 收集所有内容时,将在地图末尾打开一个门户,该门户将提供对下一个级别的访问权限...

    projGenerator:生成模板项目(springboot + mybatis + mysql + commom-mapper)

    3. **SQL 语言**:MySQL 数据库操作主要使用 SQL 语言,包括 DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)和 DQL(数据查询语言)。 4. **索引**:MySQL 支持多种类型的索引,如 B-Tree、Hash、...

    分布式ID组件1

    分布式ID组件1 分布式ID组件是指在分布式系统中生成唯一标识符的组件,用于标识不同的数据记录、业务流程等。...使用Leaf分布式ID组件需要引入相应的jar包和配置文件,并在代码中使用注解的方式来使用Leaf。

    commonlib-java:通用的Java实用程序库-开源

    重复性Java东西的有用库

    commons-lang-2.6.jar

    Apache Commons Lang是Java开发者们广泛使用的开源库之一,其中的2.6版本以其强大的功能和稳定性,在Web开发领域备受推崇。这个工具包提供了大量实用的类和方法,极大地扩展了Java语言的功能,使得开发者能够更加...

    精彩编程与编程技巧-如何使用VB控件Commom Dialog...

    ### 使用VB控件Common Dialog详解 #### 一、Common Dialog 控件概述 在Visual Basic (VB) 开发环境中,Common Dialog 控件是一个非常实用且功能强大的控件,它提供了多种预定义对话框(如打开文件对话框、保存文件...

    commom_ipc_interface.rar

    "commom_ipc_interface.rar"这个压缩包提供了对Linux下常见IPC机制的C++封装,实现了统一的接口,使得开发者可以更加方便地进行进程间的通信。 1. **信号量(Semaphore)**: - `sem_shm.cpp`涉及到信号量和共享...

    commom.c

    commom.c

    hadoop2.6.0的源码jar hadoop-common-2.6.0-sources.jar

    下载hadoop2.6.0的源码辛苦编译成的,网上没找到编译好现成的,费了几个小时用maven编译好的带源码的jar包,中间还得安装编译protoc,可以直接供eclipse使用。

    jsoup爬虫获取某网站的信息

    使用jsoup技术连接网站地址,通过改变参数获取网站div模块下的所有信息。通过hibernate技术保存到mysql数据库。项目中包括dbutil链接数据库的工具类,执行sql的helper工具类,获取网站div图片保存到本地的工具类信息...

    JAVA基础爽啊真的啊

    Java是一种广泛使用的高级编程语言,以其“一次编写,到处运行”的跨平台特性而著名。它由Sun Microsystems(现为Oracle Corporation的一部分)于1995年发布,设计初衷是为了解决C++在分布式环境中的复杂性和平台...

    最新小红书x-s参数x-t参数

    最新小红书x-s参数x-t参数、爬虫、python、小红书、反爬虫

    grunt-seajs:grunt build seajs 的演示

    #前端构建工具说明# ##主要使用工具## : 一个前端模块化开发工具。同时提供配套构建插件 : 前端任务运行器.提供各类插件用于前端开发,例如JSLint代码检验,优化,concat合并文件插件,uglify压缩...commom-debug.js comm

    上传图片利用common-fileUpload的Demo

    在使用`Commons-FileUpload`之前,你需要在项目中引入对应的依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;commons-fileupload &lt;artifactId&gt;commons-fileupload &lt;version&gt;1.4 ``...

Global site tag (gtag.js) - Google Analytics