Java mail 实现邮件附件的发送
来源:互联网 发布:手机上的编程软件 编辑:程序博客网 时间:2024/06/05 18:36
原文:http://www.codefans.net/articles/209.shtml
package mail;
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Message;
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;
import javax.transaction.Transaction;
import com.sun.jndi.cosnaming.IiopUrl.Address;
import com.sun.mail.util.MimeUtil;
public class MyMail {
private MimeMessage mimeMsg; //定义使用MIME类型、MIME信息头的邮箱信息
private Session session; //会话
private Properties props; //属性
private String username; //用户名
private String password; //密码
private Multipart mp;
public MyMail(String smtphost){
setSmtpHost(smtphost); //设置邮件服务器
createMimeMessage();
}
public void setSmtpHost(String hostName){
System.err.println("设置系统属性: mail.smtp.host="+hostName);
if(props == null){
props = System.getProperties();
}
props.put("mail.smtp.host", hostName);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.checkserveridentity", "false");
props.put("mail.smtp.ssl.trust", "mail.myhexin.com");
}
public boolean createMimeMessage(){
try {
System.out.println("准备获取邮件回话对象!");
session = Session.getDefaultInstance(props, null);
} catch (Exception e) {
// TODO: handle exception
System.err.println("获取邮件会话错误!"+e);
return false;
}
System.out.println("准备创建MIME邮件对象!");
try {
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
return true;
} catch (Exception e) {
// TODO: handle exception
System.err.println("创建MIME邮件对象失败!"+e);
return false;
}
}
/**
* 定义SMTP是否需要验证
* @param need
*/
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");
}
}
public void setNamePass(String name,String pass){
username = name;
password = pass;
}
/**
* 定义 邮件主题
* @param mailSubject
* @return
*/
public boolean setSubject(String mailSubject){
System.out.println("定义邮件主题!");
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (Exception e) {
// TODO: handle exception
System.err.println("定义邮件主题发生错误!");
return false;
}
}
/**
* 定义邮件正文
* @param mailBody
* @return
*/
public boolean setBody(String mailBody){
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(""+mailBody, "text/html;charset=UTF-8");
mp.addBodyPart(bp); //添加邮件正文
return true;
} catch (Exception e) {
// TODO: handle exception
System.err.println("定义邮件正文时发生错误!"+e);
return false;
}
}
/**
* 定义附件发送
* @param path
* @return
*/
public boolean setAnnex(String path){
try {
MimeBodyPart mimeBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(path); //获取附件
mimeBodyPart.setDataHandler(new DataHandler(source)); //添加附加的内容
mimeBodyPart.setFileName(MimeUtility.encodeWord(source.getName())); //设置解决附件名的中文乱码问题
mp.addBodyPart(mimeBodyPart); //添加附件
return true;
} catch (Exception e) {
// TODO: handle exception
System.err.println("定义附件时发生错误!"+e);
return false;
}
}
/**
* 设置发信人
* @param from
* @return
*/
public boolean setFrom(String from){
System.out.println("设置发信人!");
try {
mimeMsg.setFrom(new InternetAddress(from)); //发信人
return true;
} catch (Exception e) {
// TODO: handle exception
return false;
}
}
/**
* 定义收信人
* @param to
* @return
*/
public boolean setTo(String to){
if(to == null){
return false;
}
System.out.println("定义收信人!");
try {
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to)); //收信人
return true;
} catch (Exception e) {
// TODO: handle exception
return false;
}
}
/**
* 定义抄送人
* @param copyto
* @return
*/
public boolean setCopyTo(String copyto){
if(copyto == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
// TODO: handle exception
return false;
}
}
/**
* 邮件发送模块
* @return
*/
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.getProperty("mail.smtp.host"), username,password);
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
System.out.println("发送成功!");
transport.close();
return true;
} catch (Exception e) {
// TODO: handle exception
System.err.println("邮件发送失败!"+e);
return false;
}
}
/**
* 调用sendOut方法完成发送
* @param smtp
* @param from
* @param to
* @param copyto
* @param subject
* @param content
* @param path
* @param username
* @param password
* @return
*/
public static boolean sendAndCc(String smtp,String from,String to,String copyto,
String subject,String content,String path,String username,String password){
MyMail theMail = new MyMail(smtp);
theMail.setNeedAuth(true); //验证
if(!theMail.setSubject(subject))
return false;
if (!theMail.setBody(content))
return false;
if(!theMail.setAnnex(path))
return false;
if (!theMail.setTo(to))
return false;
if (!theMail.setCopyTo(copyto))
return false;
if (!theMail.setFrom(from))
return false;
theMail.setNamePass(username, password);
if (!theMail.sendOut())
return false;
return true;
}
}
//下面是测试类
package mail;
public class testSendMail {
public static void main(String[] args) {
String smtp = "mail.qq.com";// smtp服务器
String from = "123@qq.com";// 邮件显示名称
String to = "1232@qq.com";// 收件人的邮件地址,必须是真实地址
String copyto = "875020801@qq.com";// 抄送人邮件地址
String subject = "测试邮件";// 邮件标题
String content = "你好! 小苍";// 邮件内容
String path = "E:\\测试.txt"; //本地要发送的附件路径
String username = "123134@qq.com";// 发件人真实的账户名
String password = "1232132";// 发件人邮箱密码
MyMail.sendAndCc(smtp, from, to, copyto, subject, content, path,username, password); //调用发送函数
}
}
1 0
- Java mail 实现邮件附件的发送
- java发送邮件附件名为乱码的解决
- Java mail 实现邮件的发送
- java mail实现简单的邮件发送
- java发送邮件附件.网页.文本类型的实现(Content的内容设计)
- Java mail 实现发送电子邮件
- 实现java mail发送邮件
- 用JAVA MAIL实现发送邮件的功能
- java mail实现Email的发送,完整代码
- commons-mail+javaMail 实现java的邮件发送功能
- Java Mail实现带附件的邮件发送
- 使用Java Mail实现简单的邮件发送
- java mail实现Email的发送(SSL验证)
- java mail实现Email的发送,完整代码
- java mail实现Email的发送,完整代码
- java mail实现Email的发送,完整代码
- java mail实现Email的发送,完整代码
- java mail实现Email的发送,完整代码 - mjorcen
- 从前端菜鸟到大神,看这一篇就够了
- [leetcode] 169. Majority Element
- smdk210 Uboot的开发
- hibernate多对多,转换为两个一对多
- PAT (Advanced Level) Practise 1111 Online Map (30)
- Java mail 实现邮件附件的发送
- Linux - 简介介绍
- Hibernate 关联映射 之 多对多 关联(一)
- c++实现二叉排序树-插入-删除-递归遍历
- USACO-Section 3.3 Riding the Fences(欧拉回路)
- Java关键字总结
- Java移位操作符
- 白话经典算法系列之七 堆与堆排序
- MAC下安装多版本JDK和切换几种方式