邮件异常解决方式

来源:互联网 发布:惠东网络问政平台 编辑:程序博客网 时间:2024/04/30 01:19

java.lang.NoClassDefFoundError: javax/mail/MessagingException  

  

前天在项目中实现了用SSH整合实现邮件发送


package cn.xdd.util;
/**
 * 简单验证码生成类
 */
import java.util.Random;


public class RandomCheckCode {
public static String getCheckCode(){
String checkCode[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q"
,"R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m",
"n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"};
Random random=new Random();
StringBuffer sbf=new StringBuffer();
for(int i=0;i<6;i++){
sbf.append(checkCode[random.nextInt(62)]);
}
return sbf.toString();
}


}


/**
* 邮件发送类
*/
package cn.xdd.util;

import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendMail {
//发送邮件的用户名
static String username="213213@163.com";

private static Message getMessage(){
Properties p=new Properties();
p.put("mail.transport.protocol","smtp");
p.put("mail.smtp.host","smtp.163.com");
p.put("mail.smtp.port","25");
p.put("mail.smtp.auth","true");
//邮箱密码
final String password="213213213";
Session session=Session.getDefaultInstance(p,new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
Message message=new MimeMessage(session);
return message;
}
/**
* 邮箱发送
* @param user_email 用户邮箱
* @param stu_name 用户名
* @param checkCode 验证码
* @throws MessagingException
*/
public static void sendUser(String user_email,String userName,String checkCode)
throws MessagingException {
Message message=getMessage();
message.setFrom(new InternetAddress(username));
message.setRecipient(RecipientType.TO,new InternetAddress(user_email));
message.setSentDate(new Date());
message.setSubject("邮箱绑定");
String m="<h2>请不要点击</h2>"+"<a href=\"localhost:8080/xddcy\">" +"来自小订当餐饮官方邮件"+"</a>"+
"欢迎"+"<font color=\"red\">"+userName+"</font>"+"您使用"+user_email+"邮箱绑定本业务</br>"+"您的验证码是:"+checkCode;
message.setContent(m,"text/html;charset=utf-8");
Transport.send(message);
}
}
直接测试时没有问题,但在发布到Tomcat服务器时就有问题了,
15:43:55,608 ERROR ContextLoader:211 - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'javaMailSender' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Class that bean class [org.springframework.mail.javamail.JavaMailSenderImpl] depends on not found; nested exception is java.lang.NoClassDefFoundError: javax/mail/MessagingException
java.lang.NoClassDefFoundError: javax/mail/MessagingException
搞了很久都不明白是什么回事,因为在测试时都没有问题,而且提示中的包在项目里都有.最后通过网上搜索把问题解决了,
原来在使用Spring这样的框架的一些丰富功能时,都要在完整的J2EE容器下运行,因为Spring只不过提供J2EE容器功能的又一种调用方式罢了,所以把j2ee中的activation.jar,和mail.jarE:\Myeclipse\Common\plugins\com.genuitec.eclipse.j2eedt.core_10.5.0.me201207171805\data\libraryset\1.4)包复制到Tomcat中的common/lib目录下就发布成功了.

来自:http://iteye.blog.163.com/blog/static/1863080962014213111040997/
1 0
原创粉丝点击