之前编写一个类淘宝服务器时,需要使用javamail发送邮件,搜到的一个工具类,很有用。

需要下载导入:activation.jar和mail.jar

package com.cx.service;

import java.util.*;
import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendMail { private MimeMessage mimeMsg; // MIME邮件对象 private Session session; // 邮件会话对象
private Properties props; // 系统属性
private boolean needAuth = false; // smtp是否需要认证 private String username = ""; // smtp认证用户名和密码
private String password = ""; private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 public SendMail() { // setSmtpHost(getConfig.mailHost);//如果没有指定邮件服务器,就从getConfig类中获取
createMimeMessage(); } public SendMail(String smtp) { setSmtpHost(smtp);
createMimeMessage(); } /**
* @param hostName
* String
*/
public void setSmtpHost(String hostName) { System.out.println("设置系统属性:mail.smtp.host = " + hostName);
if (props == null)
props = System.getProperties(); // 获得系统属性对象 props.put("mail.smtp.host", hostName); // 设置SMTP主机 } /**
* @return boolean
*/
public boolean createMimeMessage() {
try {
System.out.println("准备获取邮件会话对象!");
session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
} catch (Exception e) {
System.err.println("获取邮件会话对象时发生错误!" + e);
return false;
} System.out.println("准备创建MIME邮件对象!"); try { mimeMsg = new MimeMessage(session); // 创建MIME邮件对象
mp = new MimeMultipart(); return true; } catch (Exception e) { System.err.println("创建MIME邮件对象失败!" + e);
return false;
}
} /**
* @param need
* boolean
*/
public void setNeedAuth(boolean need) { System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
if (props == null)
props = System.getProperties(); if (need) { props.put("mail.smtp.auth", "true");
} else { props.put("mail.smtp.auth", "false");
}
} /**
* @param name
* String
* @param pass
* String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
} /**
* @param mailSubject
* String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (Exception e) {
System.err.println("设置邮件主题发生错误!");
return false;
}
} /**
* @param mailBody
* String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
+ mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp); return true;
} catch (Exception e) {
System.err.println("设置邮件正文时发生错误!" + e);
return false;
}
} /**
* @param name
* String
* @param pass
* String
*/
public boolean addFileAffix(String filename) { System.out.println("增加邮件附件:" + filename); try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName()); mp.addBodyPart(bp); return true;
} catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
} /**
* @param name
* String
* @param pass
* String
*/
public boolean setFrom(String from) {
System.out.println("设置发信人!");
try {
mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
return true;
} catch (Exception e) {
return false;
}
} /**
* @param name
* String
* @param pass
* String
*/
public boolean setTo(String to) {
if (to == null)
return false; try {
mimeMsg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
return true;
} catch (Exception e) {
return false;
} } /**
* @param name
* String
* @param pass
* String
*/
public boolean setCopyTo(String copyto) {
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
return false;
}
} /**
* @param name
* String
* @param pass
* String
*/
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件...."); Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO)); System.out.println("发送邮件成功!");
transport.close(); return true;
} catch (Exception e) { System.err.println("邮件发送失败!" + e);
return false;
} } //可以修改的部分
public static void sendToSomebody(String mailbody,String title,String toEmail){
//指明让哪个smtp转发
SendMail themail=new SendMail("smtp.163.com");
//校验身份
themail.setNeedAuth(true); //邮件标题
if(themail.setSubject(title) == false) return;
//将要发送的 内容放入邮件体
if(themail.setBody(mailbody) == false) return; //发送到哪里
if(themail.setTo(toEmail) == false) return; //谁发送的
if(themail.setFrom("m15608064642@163.com") == false) return; //将在sohu网站上的邮件用户名和 密码 放入邮件体
themail.setNamePass("m15608064642@163.com","sure4321"); //发送
if(themail.sendout() == false) return;
}
}

一些非常有用的工具类之javamail(from韩顺平)的更多相关文章

  1. 【跟着子迟品 underscore】常用类型判断以及一些有用的工具方法

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...

  2. Spring 的优秀工具类盘点

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  3. 2015第30周三Spring常用工具类

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  4. Spring 的优秀工具类盘点第 1 部分

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  5. Spring 的优秀工具类盘点---转

    第 1 部分: 文件资源操作和 Web 相关工具类 http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/ 文件资源操作 文件资源的 ...

  6. Java可变参数与Collections工具类使用了解

    今天发现jdk1.5后增加了个可变参数,以前还一直不晓得 public static void main(String[] args) { System.out.println(getNum(1,2, ...

  7. 基于JavaMail开发邮件发送器工具类

    基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...

  8. Android开发中有用工具之--Log工具类

    在开发的过程中.我们常常会使用Log来输出日志,帮助我们来调试程序 可是有时候并不能全然满足我们的须要 ,比方我想知道这个日志信息是来自于哪一个包 哪一个类 所以我们封装一个这个Log类.方便我们的使 ...

  9. java中使用javaMail工具类发送邮件

    1.引入依赖 <!--javaMail--> <dependency> <groupId>javax.mail</groupId> <artifa ...

随机推荐

  1. sqlalchemy配置多读写库多连接后的关系设置

    前言 一般来说,解决sqlalchemy 连接多个库的最简单的方式是新建两个或多个db.session 相互没有关联,modle配置不同的db.session来连接,这样的话,relationship ...

  2. 【Java】3到5年开发常见的Java面试题

    一.Java基础和高级 String类为什么是final的. HashMap的源码,实现原理,底层结构. 反射中,Class.forName和classloader的区别 session和cookie ...

  3. [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列

    Description N(1<=N<=100000)头牛,一共K(1<=K<=30)种特色,每头牛有多种特色,用二进制01表示它的特色ID.比如特色ID为13(1101),则 ...

  4. linux学习之路4 系统目录架构

    linux树状文件系统结构 bin(binary) 保存可执行文件 也就是保存所有命令 boot 引导目录 保存所有跟系统有关的引导程序 其中Vmlinux文件最为重要,是系统内核 dev 保存所有的 ...

  5. navicat mysql报错误:2013 Lost connection to MySQL server during query

    好像是MySQL的navicat UI界面跟数据的连接问题,如果直接用命令导入数据的话,或许能规避这个问题.

  6. Oracle随机选择一条记录SQL

    Oracle随机选择一条记录SQL:

  7. 锚点、target="page1"、浮标回到顶部(该点未实现,能力不足)

    <html> <head> <meta charset="utf-8"> <title>链接</title> <! ...

  8. windows 定时任务 设置 安全事项

    windows 定时任务 设置 安全事项 1.如果是oaadmin/administrator 创建oracle 数据库. 安全选项如下: 1.只是在用户登录时候运行. sample: data ho ...

  9. 转 MySQL数据库基础

    http://lib.csdn.net/article/mysql/57883 1 数据库基础 一.数据库与数据库管理系统 1.数据库(DB):存放数据的仓库,从广义来说,数据不仅包括数字,还包括了文 ...

  10. 分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储

    http://blog.51cto.com/xpleaf/2093952 1 概述 在不用爬虫框架的情况,经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似MySQL.HB ...