javamail邮件发送方法实例参考



javamail邮件发送方法实例参考。

注:
java.lang.NoClassDefFoundError: javax/mail/Authenticator
 

缺少activation.jar包和mail.jar包

activation.jar下载地址http://repo1.maven.org/maven2/javax/activation/activation/1.1/activation-1.1.jar

mail.jar包下载地址                                   http://repo1.maven.org/maven2/javax/mail/mail/1.4/mail-1.4.jar

下载后放入TOMCAT_HOME/lib目录下,TOMCAT_HOME是tomcat的安装目录,然后重启tomcat即可

转自:http://hi.baidu.com/xjll1314/blog/item/b8c595ee8b2e2d2d62d09f00.html

我在使用时由于版本问题,在JB中可直接运行,但生成exe时提示上述错误,使用新版本jar包后,问题解决。

本人将这几段java代码 放入了 SRC的java代码区中  测试向163邮箱
下面是相关的 3个类
package com.util.mail;
 
import java.util.Properties; 
public class MailSenderInfo { 
// 发送邮件的服务器的IP和端口 
private String mailServerHost; 
private String mailServerPort = “25″; 
// 邮件发送者的地址 
private String fromAddress; 
// 邮件接收者的地址 
private String toAddress; 
// 登陆邮件发送服务器的用户名和密码 
private String userName; 
private String password; 
// 是否需要身份验证 
private boolean validate = false; 
// 邮件主题 
private String subject; 
// 邮件的文本内容 
private String content; 
// 邮件附件的文件名 
private String[] attachFileNames;
 
public Properties getProperties(){ 
 Properties p = new Properties(); 
 p.put(“mail.smtp.host”, this.mailServerHost); 
 p.put(“mail.smtp.port”, this.mailServerPort); 
 p.put(“mail.smtp.auth”, validate ? “true” : “false”); 
 return p; 
public String getMailServerHost() { 
 return mailServerHost; 
public void setMailServerHost(String mailServerHost) { 
 this.mailServerHost = mailServerHost; 
}
public String getMailServerPort() { 
 return mailServerPort; 
}
public void setMailServerPort(String mailServerPort) { 
 this.mailServerPort = mailServerPort; 
}
public boolean isValidate() { 
 return validate; 
}
public void setValidate(boolean validate) { 
 this.validate = validate; 
}
public String[] getAttachFileNames() { 
 return attachFileNames; 
}
public void setAttachFileNames(String[] fileNames) { 
 this.attachFileNames = fileNames; 
}
public String getFromAddress() { 
 return fromAddress; 
public void setFromAddress(String fromAddress) { 
 this.fromAddress = fromAddress; 
}
public String getPassword() { 
 return password; 
}
public void setPassword(String password) { 
 this.password = password; 
}
public String getToAddress() { 
 return toAddress; 
public void setToAddress(String toAddress) { 
 this.toAddress = toAddress; 
public String getUserName() { 
 return userName; 
}
public void setUserName(String userName) { 
 this.userName = userName; 
}
public String getSubject() { 
 return subject; 
}
public void setSubject(String subject) { 
 this.subject = subject; 
}
public String getContent() { 
 return content; 
}
public void setContent(String textContent) { 
 this.content = textContent; 
//—————————- ————————————————————————–
package com.util.mail;
package com.util.mail;
import java.util.Date; 
import java.util.Properties;
import javax.mail.Address; 
import javax.mail.BodyPart; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
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 SimpleMailSender  
 
public boolean sendTextMail(MailSenderInfo mailInfo) { 
 // 判断是否需要身份认证 
 MyAuthenticator authenticator = null; 
 Properties pro = mailInfo.getProperties();
 if (mailInfo.isValidate()) { 
 // 如果需要身份认证,则创建一个密码验证器 
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 
 }
 // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
 Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
 try { 
 // 根据session创建一个邮件消息 
 Message mailMessage = new MimeMessage(sendMailSession); 
 // 创建邮件发送者地址 
 Address from = new InternetAddress(mailInfo.getFromAddress()); 
 // 设置邮件消息的发送者 
 mailMessage.setFrom(from); 
 // 创建邮件的接收者地址,并设置到邮件消息中 
 Address to = new InternetAddress(mailInfo.getToAddress()); 
 mailMessage.setRecipient(Message.RecipientType.TO,to); 
 // 设置邮件消息的主题 
 mailMessage.setSubject(mailInfo.getSubject()); 
 // 设置邮件消息发送的时间 
 mailMessage.setSentDate(new Date()); 
 // 设置邮件消息的主要内容 
 String mailContent = mailInfo.getContent(); 
 mailMessage.setText(mailContent); 
 // 发送邮件 
 Transport.send(mailMessage);
 return true; 
 } catch (MessagingException ex) { 
 ex.printStackTrace(); 
 
 return false; 
 
public static boolean sendHtmlMail(MailSenderInfo mailInfo){ 
 // 判断是否需要身份认证 
 MyAuthenticator authenticator = null;
 Properties pro = mailInfo.getProperties();
 //如果需要身份认证,则创建一个密码验证器  
 if (mailInfo.isValidate()) { 
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
 
 // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
 Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
 try { 
 // 根据session创建一个邮件消息 
 Message ma ilMessage = new MimeMessage(sendMailSession); 
 // 创建邮件发送者地址 
 Address from = new InternetAddress(mailInfo.getFromAddress()); 
 // 设置邮件消息的发送者 
 mailMessage.setFrom(from); 
 // 创建邮件的接收者地址,并设置到邮件消息中 
 Address to = new InternetAddress(mailInfo.getToAddress()); 
 // Message.RecipientType.TO属性表示接收者的类型为TO 
 mailMessage.setRecipient(Message.RecipientType.TO,to); 
 // 设置邮件消息的主题 
 mailMessage.setSubject(mailInfo.getSubject()); 
 // 设置邮件消息发送的时间 
 mailMessage.setSentDate(new Date()); 
 // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 
 Multipart mainPart = new MimeMultipart(); 
 // 创建一个包含HTML内容的MimeBodyPart 
 BodyPart html = new MimeBodyPart(); 
 // 设置HTML内容 
 html.setContent(mailInfo.getContent(), “text/html; charset=utf-8″); 
 mainPart.addBodyPart(html); 
 // 将MiniMultipart对象设置为邮件内容 
 mailMessage.setContent(mainPart); 
 // 发送邮件 
 Transport.send(mailMessage); 
 return true; 
 } catch (MessagingException ex) { 
 ex.printStackTrace(); 
 
 return false; 
java 调用
//——————————————————————————————————
import javax.mail.*;
public class MyAuthenticator extends Authenticator{
String userName=null;
String password=null;
public MyAuthenticator(){
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName, password);
}
public static void main(String[] args){
         //这个类主要是设置邮件
      MailSenderInfo mailInfo = new MailSenderInfo();
      mailInfo.setMailServerHost(“smtp.163.com”);//邮件服务器地址
      mailInfo.setMailServerPort(“25″);//服务器端口号
      mailInfo.setValidate(true);
      mailInfo.setUserName(“*******@163.com”);//发件人帐号
      mailInfo.setPassword(“*******”);//您的邮箱密码
      mailInfo.setFromAddress(“*******@163.com”);//发件人邮箱
      mailInfo.setToAddress(“*******@163.com”);//收件人邮箱
      mailInfo.setSubject(“测试邮件”);//标题
      mailInfo.setContent(“测试邮件的内容”);//内容
         //这个类主要来发送邮件
      SimpleMailSender sms = new SimpleMailSender();
          sms.sendTextMail(mailInfo);//发送文体格式
          sms.sendHtmlMail(mailInfo);//发送html格式
    }  
}
 
 
//——————————————————————————————————
groovy调用  由于调用的是java代码 其实和java一摸一样  
  class UpJointInterfaceCategoryController  {
      
     
      def sendMail ={
      //这个类主要是设置邮件
     MailSenderInfo mailInfo =  new MailSenderInfo();
     mailInfo.setMailServerHost(“smtp.163.com”);
     mailInfo.setMailServerPort(“25″);
     mailInfo.setValidate(true);
     mailInfo.setUserName(“*******@163.com”);
     mailInfo.setPassword(“*******”);//您的邮箱密码
     mailInfo.setFromAddress(“*******@163.com”);
     mailInfo.setToAddress(“*******@163.com”);
     mailInfo.setSubject(“测试邮件”);
     mailInfo.setContent(“测试邮件的内容”);
        //这个类主要来发送邮件
     SimpleMailSender sms = new SimpleMailSender();
         sms.sendTextMail(mailInfo);//发送文体格式
       //  sms.sendHtmlMail(mailInfo);//发送html格式
   
      
      }
      
      
     
  def sendMailHasParameter ={serverHost,serverPort,validate,userName,password,fromAddress,toAddress,subject,content->
  //这个类主要是设置邮件
     MailSenderInfo mailInfo = new MailSenderInfo();
     mailInfo.setMailServerHost(serverHost);
     mailInfo.setMailServerPort(serverPort);
     mailInfo.setValidate(validate);
     mailInfo.setUserName(userName);
     mailInfo.setPassword(password);//您的邮箱密码
     mailInfo.setFromAddress(fromAddress);
     mailInfo.setToAddress(toAddress);
     mailInfo.setSubject(subject);
     mailInfo.setContent(content);
        //这个类主要来发送邮件
     SimpleMailSender sms = new SimpleMailSender();
         sms.sendTextMail(mailInfo);//发送文体格式
        // sms.sendHtmlMail(mailInfo);//发送html格式
   
  }
  }
  
  //——————————————————————————————————