javaMail发送邮件


                                在java中发送邮件可以利用java中自带的Mail包:Mail.jar和activation.jar包,下面的代码是一个封装好的工具          类,利用内部类将发送邮件的程序都封装在一个类里面,其代码如下:

                              public class EmailUtil {
//邮件服务器
private static String mailServerHost = "smtp.163.com"; //可以从配置文件中读取
//邮件端口
private static String mailServerPort = "25";
//发送邮件的姓名
private static String mailServerUsername = "";
//发送邮件的密码
private static String mailServerPassword = "";

public static void sendMail(EmailModel email) throws SendMailException {
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost(mailServerHost);
mailInfo.setMailServerPort(mailServerPort);
mailInfo.setValidate(true);
mailInfo.setUserName(mailServerUsername);
mailInfo.setPassword(mailServerPassword);


mailInfo.setFromAddress(email.getFromAddress());
mailInfo.setToAddress(email.getToAddress());
mailInfo.setSubject(email.getSubJect());
mailInfo.setContent(email.getContent());


SimpleMailSender sms = new SimpleMailSender();
if (email.isHtml())
sms.sendHtmlMail(mailInfo);
else
sms.sendTextMail(mailInfo);
}

//简单邮件的发送器 不带附件的
static class SimpleMailSender {
/**  
 * 以文本格式发送邮件  
 * @param mailInfo 待发送的邮件的信息  
 */   
   public boolean sendTextMail(MailSenderInfo mailInfo) throws SendMailException{   
     // 判断是否需要身份认证   
     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();   
      throw new SendMailException(ex);
     }   
    // return false;   
   }   
     
   /**  
     * 以HTML格式发送邮件  
     * @param mailInfo 待发送的邮件信息  
     */   
   public static boolean sendHtmlMail(MailSenderInfo mailInfo) throws SendMailException{   
     // 判断是否需要身份认证   
     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());   
     // 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(); 
      throw new SendMailException(ex);
     }   
     //return false;   
   }  

}

static 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);
}
}


//发送邮件的主休类
static 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;   
   }   
}
}

       注意当工程中如果多了geronimo-activation_1.1_spec-1.0.2.jar  geronimo-javamail_1.4_spec-1.3.jar包时,会出现你能正常发邮件,但其邮件主题是空的,且邮件内容都是字母。去掉后就恢复正常。

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值