J2ee5与javamail的冲突J2ee5自带的activation,mail的jar包会与javamail的jar产生冲突,解决方法是找到myecl
J2ee5与javamail的冲突
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类:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->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;
????}
}
?
Test:
?
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->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();
????}
}