zoukankan      html  css  js  c++  java
  • java发送邮件

    需要下载一个Mail.jar包

    【注】如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
    原因是jar包版本不统一,解决方法如下: 删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

    具体方法如下:
    方法一:用rar打开X:/Program Files/MyEclipse 6.0/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar ,然后删除mail,一切就ok了. (个人推荐)

    方法二:
    JavaEE版本和JavaMail的版本不一致,请将sun公司上下载最新版本.
       例如:javaMail 1.3以下的如果在javaEE5上就会出现上面的错误,
       但如果在javaEE1.4下就正常.(但本人试过,javaEE5+javaMail1.4还是有一样的问题)
       因为javaEE5中包含有javaMail的类但是却不全面,所以出本身的JavaMail
       包冲突.

    具体实现如下:

    MailSenderInfo.java

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

    MyAuthenticator.java

    package com.util.mail; 
      
    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); 
      } 
    } 
    
    

    SimpleMailSender.java

    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; 
    
    /** *//** 
    * 简单邮件(不带附件的邮件)发送器 
    http://www.bt285.cn BT下载
    */
    public class SimpleMailSender{
    /** *//** 
     * 以文本格式发送邮件 
     * @param mailInfo 待发送的邮件的信息 
     */
    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;  
      }
    
    /**
    * 以HTML格式发送邮件 
    * @param mailInfo 待发送的邮件信息 
    */  
      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 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(); 
    } 
     return false; 
     } 
    } 
    

    test.java

    package com.util.mail;
    
    public class test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//这个类主要是设置邮件   
    	 MailSenderInfo mailInfo = new MailSenderInfo();
      mailInfo.setMailServerHost("smtp.163.com");  
      mailInfo.setMailServerPort("25");  
      mailInfo.setValidate(true);  
      mailInfo.setUserName("yanyuanyuan101@163.com");  
      mailInfo.setPassword("100982");//您的邮箱密码  
      mailInfo.setFromAddress("yanyuanyuan101@163.com");  
     // mailInfo.setToAddress("315905059@qq.com");  
      mailInfo.setToAddress("msn.leonard@gmail.com"); 
      mailInfo.setSubject("设置邮箱标题 如http://www.guihua.org 中国桂花网");  
      mailInfo.setContent("设置邮箱内容 如http://www.guihua.org 中国桂花网 是中国最大桂花网站==");  
       //这个类主要来发送邮件   
      SimpleMailSender sms = new SimpleMailSender();
     sms.sendTextMail(mailInfo);//发送文体格式  
     sms.sendHtmlMail(mailInfo);//发送html格式 
    	}
    
    }
    
  • 相关阅读:
    使用GoogleCode作SVN服务器的一些问题及解决办法
    【转】hibernate中的映射文件xxx.hbm.xml详解总结
    Connection cannot be null when 'hibernate.dialect' not set
    <mvc:view-controller path=""/>标签的作用
    mysql 5.7.18版本 sql_mode 问题
    搭建Spring所需的各类jar包汇总详解
    WEB-INF目录与META-INF目录的作用
    【转】NPIV
    Java中继承thread类与实现Runnable接口的区别
    centos6.5 配置本地yum源
  • 原文地址:https://www.cnblogs.com/batys/p/2275560.html
Copyright © 2011-2022 走看看