java邮件发送(含附件)
1. [代码]java邮件发送(含附件)
疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:
1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)
emailsmtp=smtp.qq.com
emailaddress=459104018@qq.com
emailpass=******
2、读取配置文件的类文件(ReadPropertity.java)
import java.io.IOException;
import java.util.Properties;
public class ReadPropertity {
static Properties props = new Properties();
static {
try {
props.load(ReadPropertity.class.getClassLoader().getResourceAsStream(
"utils.properties"));
} catch (IOException e1) {
e1.printStackTrace();
}
}
public static String getProperty(String key) {
return props.getProperty(key);
}
}
3、邮件处理类(EmailHandle.java)
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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 javax.mail.internet.MimeUtility;
/**
* 本程序用java来实现Email的发送, 所用到的协议为:smtp
* <p>Company: 疯狂的IT人</p>
* time:2013-04-05
* @author www.crazyiter.com
* @date
* @version 1.0
*/
public class EmailHandle {
private MimeMessage mimeMsg; //邮件对象
private Session session; //发送邮件的Session会话
private Properties props;//邮件发送时的一些配置信息的一个属性对象
private String sendUserName; //发件人的用户名
private String sendUserPass; //发件人密码
private Multipart mp;//附件添加的组件
private List files = new LinkedList();//存放附件文件
public EmailHandle(String smtp) {
sendUserName = "";
sendUserPass = "";
setSmtpHost(smtp);// 设置邮件服务器
createMimeMessage(); // 创建邮件
}
public void setSmtpHost(String hostName) {
if (props == null)
props = System.getProperties();
props.put("mail.smtp.host", hostName);
}
public boolean createMimeMessage(){
try {
// 用props对象来创建并初始化session对象
session = Session.getDefaultInstance(props, null);
} catch (Exception e) {
System.err.println("获取邮件会话对象时发生错误!" + e);
return false;
}
try {
mimeMsg = new MimeMessage(session); // 用session对象来创建并初始化邮件对象
mp = new MimeMultipart();// 生成附件组件的实例
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置SMTP的身份认证
*/
public void setNeedAuth(boolean need) {
if (props == null)
props = System.getProperties();
if (need)
props.put("mail.smtp.auth", "true");
else
props.put("mail.smtp.auth", "false");
}
/**网站模板
* 进行用户身份验证时,设置用户名和密码
*/http://www.huiyi8.com/moban/
public void setNamePass(String name, String pass) {
sendUserName = name;
sendUserPass = pass;
}
/**
* 设置邮件主题
* @param mailSubject
* @return
*/
public boolean setSubject(String mailSubject) {
try {
mimeMsg.setSubject(mailSubject);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
* @param mailBody
* @return
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+ mailBody, "text/html;charset=UTF-8");
// 在组件上添加邮件文本
mp.addBodyPart(bp);
} catch (Exception e) {
System.err.println("设置邮件正文时发生错误!" + e);
return false;
}
return true;
}
/**
* 增加发送附件
* @param filename
* 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
* @return
*/
public boolean addFileAffix(String filename) {
try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null)); // 解决附件名称乱码
mp.addBodyPart(bp);// 添加附件
files.add(fileds);
} catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
return true;
}
public boolean delFileAffix(){
try {
FileDataSource fileds = null;
for(Iterator it = files.iterator() ;it.hasNext();) {
fileds = (FileDataSource)it.next();
if(fileds != null && fileds.getFile() != null){
fileds.getFile().delete();
}
}
}catch (Exception e) {
return false;
}
return true;
}
/**
* 设置发件人地址
* @param from
* 发件人地址
* @return
*/
public boolean setFrom(String from) {
try {
mimeMsg.setFrom(new InternetAddress(from));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置收件人地址
* @param to收件人的地址
* @return
*/
public boolean setTo(String to) {
if (to == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 发送附件
* @param copyto
* @return
*/
public boolean setCopyTo(String copyto) {
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 发送邮件
* @return
*/
public boolean sendEmail() throws Exception{
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"), sendUserName,sendUserPass);
// 发送邮件
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
System.out.println("发送邮件成功!");
transport.close();
return true;
}
}
4、邮件发送的类文件(SendEmail.java)
/**
* 发送邮件测试
* <p>Company: 疯狂的IT人</p>
* time:2013-04-05
* @author www.crazyiter.com
* @date
* @version 1.0
*/
public class SendEmail {
public SendEmail() {
}
/***以后需要两个参数:接收方地址 、 内容***/
public static void send(String subject, String toaddress,String content)throws Exception {
String hostName = ReadPropertity.getProperty("emailsmtp");
String fromAddress = ReadPropertity.getProperty("emailaddress");
String fromAPass = ReadPropertity.getProperty("emailpass");
EmailHandle emailHandle = new EmailHandle(hostName);
emailHandle.setFrom(fromAddress);
emailHandle.setNeedAuth(true);
emailHandle.setSubject(subject);
emailHandle.setBody(content);
emailHandle.setTo(toaddress);
emailHandle.setFrom(fromAddress);
emailHandle.addFileAffix("D:/myself/help/txt/java环境变量.txt");// 附件文件路径
emailHandle.setNamePass(fromAddress, fromAPass);
emailHandle.sendEmail();
}
public static void main(String[] args) {
try {
SendEmail.send("带附件的邮件测试","459104018@qq.com","测试内容<a href='http://www.crazyiter.com'>疯狂的IT人</a>");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5、发送邮件需要的jar包:
activation.jar
mail-plugin.jar
mail.jar
java邮件发送(含附件)的更多相关文章
- C#邮件发送(含附件)
class SendEmail { static void Main(string[] args) { string from = "发件人@yingu.com"; string ...
- java mail邮件发送(带附件) 支持SSL
java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.ut ...
- 基于JavaMail的Java邮件发送:复杂邮件发送
参考:http://blog.csdn.net/xietansheng/article/details/51722660package com.bfd.ftp.utils;import java.ut ...
- JAVA邮件发送的简单实现
JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件.这一机制被广泛的用在注 ...
- java-基于JavaMail的Java邮件发送
1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送
- System.Net.Mail邮件发送抄送附件(多个)
/// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...
- 解决java mail发送TXT附件被直接显示在正文中的问题
这两天遇到一个问题,关于使用java mail发送邮件的问题. 详细是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包含异常日志的附件,和关于设备信息的邮件正文.假设日志为log后缀 ...
- 【转】基于JavaMail的Java邮件发送
http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...
- java email发送(附件中文的处理)
这里使用的是commons-email-1.3.2.jar进行的开发,自认为这是简单的邮件发送. package com.yt.base.common; import java.io.Unsuppor ...
随机推荐
- 自己写了一个超级简便且傻瓜式的且功能强大的CSV组件(并且代码优雅,绝对没有一行多余的代码)
github地址: https://github.com/yangfeixxx/chipsCSV.git 解决的问题:解决了传统的CSV工具类对于实体类无法自动化封装为带表头的CSV文件的痛点,在读取 ...
- javaweb学习总结(八)——HttpServletResponse对象(二)(转)
(每天都会更新至少一篇以上,有兴趣的可以关注)转载自孤傲苍狼 一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedI ...
- java多线程编程核心技术学习-1
实现多线程的两种方式 继承Thread类,重写Thread类中的run方法 public class MyThread extends Thread{ @Override public void ru ...
- mongo安装-docker
拉取官方镜像(可以自己使用dockerFile构建): docker search mongo //查询Docker Hub 上的mongo镜像 docker pull mongo // 拉取官方镜像 ...
- 使用EventNext实现基于事件驱动的业务处理
事件驱动模型相信对大家来说并不陌生,因为这是一套非常高效的逻辑处理模型,通过事件来驱动接下来需要完成的工作,而不像传统同步模型等待任务完成后再继续!虽然事件驱动有着这样的好处,但在传统设计上基于消息回 ...
- collection包1.1.0都升级了什么功能
collection包1.1.0都升级了什么功能 jianfengye/collection(https://github.com/jianfengye/collection) 这个包喜迎第一个子版本 ...
- 嵌入式cpu架构
原文:http://www.kaixin001.com/repaste/11007221_7220618944.html### 内容: 目前主要CPU架构有ARM.X86/Atom.MIPS.Powe ...
- 使用Crypto对数据进行加密解密
注释都在代码里: 先撸客户端: from Crypto.Cipher import AES import base64,requests class Message(object): def __in ...
- File类 文件过滤器
创建过滤器 package cn.zmh.File; import java.io.File; import java.io.FileFilter; // 实现FileFilter类的功能 publi ...
- memcached安装与初步
mac 首先安装homebrew 根目录下 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew ...