J2ee5自带的activation,mail的jar包会与javamail的jar产生冲突,
解决方法是找到myeclipse里面的javaee.jar,打开这个Jar包找到mail与activation文件夹目录将其删除,刷新工程后即可。
javaee.jar在我本机的路径如下:
D:\eclipse\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710\data\libraryset\EE_5
【javamail实现代码】
Mail类:
package
com.wintv.common;
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;
public class Mail {
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 Mail(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 " );
}
/**
* 进行用户身份验证时,设置用户名和密码
*/
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);
// 下面这段代码是给html里面加上图片的
// FileDataSource fds = new FileDataSource("d:/2dy.jpg");
// MimeBodyPart mbp2 = new MimeBodyPart();
// mbp2.setFileName(fds.getName());
// mbp2.setText("This is a beautiful car !");
// mbp2.setDataHandler(new DataHandler(fds));
// mbp2.setHeader("Content-ID",fds.getName());
// mp.addBodyPart(mbp2);
} 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(fileds.getName()); // 发送的附件前加上一个用户名的前缀
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() {
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 " ), sendUserName,sendUserPass);
// 发送邮件
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
System.out.println( " 发送邮件成功! " );
transport.close();
} catch (Exception e) {
System.err.println( " 邮件发送失败! " + e.getMessage());
return false ;
}
return true ;
}
}
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;
public class Mail {
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 Mail(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 " );
}
/**
* 进行用户身份验证时,设置用户名和密码
*/
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);
// 下面这段代码是给html里面加上图片的
// FileDataSource fds = new FileDataSource("d:/2dy.jpg");
// MimeBodyPart mbp2 = new MimeBodyPart();
// mbp2.setFileName(fds.getName());
// mbp2.setText("This is a beautiful car !");
// mbp2.setDataHandler(new DataHandler(fds));
// mbp2.setHeader("Content-ID",fds.getName());
// mp.addBodyPart(mbp2);
} 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(fileds.getName()); // 发送的附件前加上一个用户名的前缀
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() {
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 " ), sendUserName,sendUserPass);
// 发送邮件
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
System.out.println( " 发送邮件成功! " );
transport.close();
} catch (Exception e) {
System.err.println( " 邮件发送失败! " + e.getMessage());
return false ;
}
return true ;
}
}
Test:
package
test;
import com.wintv.common.Mail;
public class Test {
public void send(){
String Subject = " 找回密码 " ;
String bodyContent = " 密码:xxx " ;
String hostName = " mail.wintv.cn " ;
String fromAddress = " yht@wintv.cn " ;
String fromAPass = " arix04 " ;
String toAddress = " yht207@126.com " ;
try {
Mail emailHandle = new Mail(hostName);
emailHandle.setFrom(fromAddress);
emailHandle.setNeedAuth( true );
emailHandle.setSubject(Subject);
emailHandle.setBody(bodyContent);
emailHandle.setTo(toAddress);
emailHandle.setFrom(fromAddress);
// emailHandle.addFileAffix("d:/2dy.jpg"); // 附件文件路径
// emailHandle.addFileAffix("d:/2dy.jpg"); // 附件文件路径
emailHandle.setNamePass(fromAddress,fromAPass);
emailHandle.sendEmail();
// emailHandle.delFileAffix(); // 删除发送附件信息
} catch (Exception ex){
ex.printStackTrace();
}
}
public static void main(String []args){
Test t = new Test();
t.send();
}
}
import com.wintv.common.Mail;
public class Test {
public void send(){
String Subject = " 找回密码 " ;
String bodyContent = " 密码:xxx " ;
String hostName = " mail.wintv.cn " ;
String fromAddress = " yht@wintv.cn " ;
String fromAPass = " arix04 " ;
String toAddress = " yht207@126.com " ;
try {
Mail emailHandle = new Mail(hostName);
emailHandle.setFrom(fromAddress);
emailHandle.setNeedAuth( true );
emailHandle.setSubject(Subject);
emailHandle.setBody(bodyContent);
emailHandle.setTo(toAddress);
emailHandle.setFrom(fromAddress);
// emailHandle.addFileAffix("d:/2dy.jpg"); // 附件文件路径
// emailHandle.addFileAffix("d:/2dy.jpg"); // 附件文件路径
emailHandle.setNamePass(fromAddress,fromAPass);
emailHandle.sendEmail();
// emailHandle.delFileAffix(); // 删除发送附件信息
} catch (Exception ex){
ex.printStackTrace();
}
}
public static void main(String []args){
Test t = new Test();
t.send();
}
}
附activation.jar,mail.jar下载