`

apache commons email 简单使用

    博客分类:
  • java
阅读更多

将上次发邮件的代码写了个方法简单封装了一下,以满足需求,主要是各邮件服务商情况不一样,有时候可能会发送不成功现象,为了减少失败的概率,所以试着通过配置多个邮件服务商来按顺序发送邮件,失败了就换一个邮件服务器,成功则立即终止。请看代码:

(一)javabean封装邮件发送相关信息:

Java代码 复制代码
  1. package com.basekj.entity;   
  2. import java.util.ArrayList;   
  3. /**  
  4.  * 邮件发送信息  
  5.  * @author  
  6.  * @date 2010-08-18  
  7.  */  
  8. public class SendEmailInfoBean {   
  9.     private String emailFromInfo;   
  10.     //private ArrayList<EmailFromInfoBean> emailFromInfo; //邮件发送方基本信息   
  11.     private ArrayList<String> emailTo;        //邮件接收方    
  12.     private ArrayList<String> emailCc;        //邮件抄送方   
  13.     private ArrayList<String> emailBcc;       //邮件秘密抄送方   
  14.     private String subject;                 //主题   
  15.     private String sendMsg;                 //邮件内容   
  16.        
  17. //  public ArrayList<EmailFromInfoBean> getEmailFromInfo() {   
  18. //      return emailFromInfo;   
  19. //  }   
  20. //  public void setEmailFromInfo(ArrayList<EmailFromInfoBean> emailFromInfo) {   
  21. //      this.emailFromInfo = emailFromInfo;   
  22. //  }   
  23.     public ArrayList<String> getEmailTo() {   
  24.         return emailTo;   
  25.     }   
  26.     public String getEmailFromInfo() {   
  27.         return emailFromInfo;   
  28.     }   
  29.     public void setEmailFromInfo(String emailFromInfo) {   
  30.         this.emailFromInfo = emailFromInfo;   
  31.     }   
  32.     public void setEmailTo(ArrayList<String> emailTo) {   
  33.         this.emailTo = emailTo;   
  34.     }   
  35.     public ArrayList<String> getEmailCc() {   
  36.         return emailCc;   
  37.     }   
  38.     public void setEmailCc(ArrayList<String> emailCc) {   
  39.         this.emailCc = emailCc;   
  40.     }   
  41.     public ArrayList<String> getEmailBcc() {   
  42.         return emailBcc;   
  43.     }   
  44.     public void setEmailBcc(ArrayList<String> emailBcc) {   
  45.         this.emailBcc = emailBcc;   
  46.     }   
  47.     public String getSubject() {   
  48.         return subject;   
  49.     }   
  50.     public void setSubject(String subject) {   
  51.         this.subject = subject;   
  52.     }   
  53.     public String getSendMsg() {   
  54.         return sendMsg;   
  55.     }   
  56.     public void setSendMsg(String sendMsg) {   
  57.         this.sendMsg = sendMsg;   
  58.     }   
  59. }  
package com.basekj.entity;
import java.util.ArrayList;
/**
 * 邮件发送信息
 * @author
 * @date 2010-08-18
 */
public class SendEmailInfoBean {
	private String emailFromInfo;
	//private ArrayList<EmailFromInfoBean> emailFromInfo;	//邮件发送方基本信息
	private ArrayList<String> emailTo;		//邮件接收方 
	private ArrayList<String> emailCc;		//邮件抄送方
	private ArrayList<String> emailBcc;		//邮件秘密抄送方
	private String subject; 				//主题
	private String sendMsg; 				//邮件内容
	
//	public ArrayList<EmailFromInfoBean> getEmailFromInfo() {
//		return emailFromInfo;
//	}
//	public void setEmailFromInfo(ArrayList<EmailFromInfoBean> emailFromInfo) {
//		this.emailFromInfo = emailFromInfo;
//	}
	public ArrayList<String> getEmailTo() {
		return emailTo;
	}
	public String getEmailFromInfo() {
		return emailFromInfo;
	}
	public void setEmailFromInfo(String emailFromInfo) {
		this.emailFromInfo = emailFromInfo;
	}
	public void setEmailTo(ArrayList<String> emailTo) {
		this.emailTo = emailTo;
	}
	public ArrayList<String> getEmailCc() {
		return emailCc;
	}
	public void setEmailCc(ArrayList<String> emailCc) {
		this.emailCc = emailCc;
	}
	public ArrayList<String> getEmailBcc() {
		return emailBcc;
	}
	public void setEmailBcc(ArrayList<String> emailBcc) {
		this.emailBcc = emailBcc;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getSendMsg() {
		return sendMsg;
	}
	public void setSendMsg(String sendMsg) {
		this.sendMsg = sendMsg;
	}
}



(二)发送邮件类:

Java代码 复制代码
  1. package com.basekj.business;   
  2.   
  3. import java.util.ArrayList;   
  4. import org.apache.commons.lang.StringUtils;   
  5. import org.apache.commons.logging.Log;   
  6. import org.apache.commons.logging.LogFactory;   
  7. import org.apache.commons.mail.DefaultAuthenticator;   
  8. import org.apache.commons.mail.EmailException;        
  9. import org.apache.commons.mail.SimpleEmail;         
  10. import com.basekj.entity.SendEmailInfoBean;   
  11. import com.basekj.exception.BusinessException;   
  12. import com.basekj.util.ReadProperties;   
  13. /**  
  14.  *   
  15.  * @author   
  16.  * @date 2010-08-17  
  17.  */    
  18. public class BaseEmailSendBiz      
  19. {     
  20.     public BaseEmailSendBiz()     
  21.     {     
  22.              
  23.     }     
  24.          
  25.     private static final Log logger = LogFactory.getLog(BaseEmailSendBiz.class);     
  26.     /**  
  27.      *   
  28.      * @param emailInfo  
  29.      * @return result:false表示发送失败,true表示发送成功!  
  30.      * @throws BusinessException  
  31.      */  
  32.     public static boolean send(SendEmailInfoBean emailInfo) throws BusinessException  {     
  33.         boolean result = false;   
  34.         SimpleEmail email = new SimpleEmail();   
  35.         //email.setDebug(true);   
  36.         try      
  37.         {   
  38.             String emailFromInfo = emailInfo.getEmailFromInfo();   
  39.             String[] fromArray = emailFromInfo.split("\\{|}");  //按{或 } 分解字符串   
  40.             for(int i=0; i<fromArray.length; i++) {   
  41.                 if(StringUtils.isNotEmpty(fromArray[i])) {   
  42.                     String[] from = fromArray[i].split(",");   
  43.                     email.setHostName(from[0]);                     //发送方邮件服务器   
  44.                     email.setFrom(from[1]);                         // 发送方地址   
  45.                     email.setAuthenticator(new DefaultAuthenticator(from[2],from[3]));   
  46.                     if("1".equals(from[4])) {   
  47.                         email.setTLS(true);                         //是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验   
  48.                     }   
  49.                     if("1".equals(from[5])) {   
  50.                         email.setSSL(true);     
  51.                     }   
  52.                     ArrayList<String> emailTo = emailInfo.getEmailTo();   
  53.                     ArrayList<String> emailCc = emailInfo.getEmailCc();   
  54.                     ArrayList<String> emailBcc = emailInfo.getEmailBcc();   
  55.                     for(int j=0; j<emailTo.size(); j++) {   
  56.                         email.addTo(emailTo.get(j));                // 接收方   
  57.                     }   
  58.                     for(int j=0; emailCc!=null&&j<emailCc.size(); j++) {   
  59.                         email.addCc(emailCc.get(j));                // 抄送方   
  60.                     }   
  61.                     for(int j=0; emailBcc!=null&&j<emailBcc.size(); j++) {   
  62.                         email.addBcc(emailBcc.get(j));              // 秘密抄送方   
  63.                     }   
  64.                     email.setCharset("GB2312");                     // 编码   
  65.                     email.setSubject(emailInfo.getSubject());       // 标题   
  66.                     email.setMsg(emailInfo.getSendMsg());           // 内容   
  67.                     String emailResult = email.send();   
  68.                     System.out.println("用"+from[1]+"邮箱来发送,发送结果:"+emailResult);   
  69.                     if(!StringUtils.equals("failed",emailResult)) {   
  70.                         return true;   
  71.                     }else {   
  72.                         email = null;   
  73.                         email = new SimpleEmail();   
  74.                         continue;   
  75.                     }   
  76.                 }   
  77.                    
  78.             }   
  79.         } catch (EmailException e) {     
  80.             result = false;   
  81.             if(logger.isErrorEnabled()){   
  82.                 logger.error("发送邮件出错!");   
  83.             }   
  84.             throw new BusinessException(e.getMessage());   
  85.         }    
  86.         return result;   
  87.     }     
  88.        
  89.     public static void main(String[] args)     
  90.     {   
  91.         ReadProperties property = new ReadProperties();   
  92.         SendEmailInfoBean emailInfo = new SendEmailInfoBean();   
  93.         emailInfo.setEmailFromInfo(property.readData("email_info"));   
  94.         ArrayList<String> a = new ArrayList<String>();   
  95.         a.add("******@qq.com");   
  96.         a.add("xxx@163.com");   
  97.         emailInfo.setEmailTo(a);   
  98.         emailInfo.setSubject("请查收");   
  99.         emailInfo.setSendMsg("这个是java程序发送邮件测试的");   
  100.         try {   
  101.             System.out.println("开始发送:");   
  102.             boolean result = send(emailInfo);   
  103.             System.out.println("发送结果:" + result);   
  104.         } catch (BusinessException e) {   
  105.             e.printStackTrace();   
  106.         }   
  107.     }     
  108. }  
package com.basekj.business;

import java.util.ArrayList;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;     
import org.apache.commons.mail.SimpleEmail;      
import com.basekj.entity.SendEmailInfoBean;
import com.basekj.exception.BusinessException;
import com.basekj.util.ReadProperties;
/**
 * 
 * @author 
 * @date 2010-08-17
 */ 
public class BaseEmailSendBiz   
{  
    public BaseEmailSendBiz()  
    {  
          
    }  
      
    private static final Log logger = LogFactory.getLog(BaseEmailSendBiz.class);  
    /**
     * 
     * @param emailInfo
     * @return result:false表示发送失败,true表示发送成功!
     * @throws BusinessException
     */
    public static boolean send(SendEmailInfoBean emailInfo) throws BusinessException  {  
    	boolean result = false;
    	SimpleEmail email = new SimpleEmail();
        //email.setDebug(true);
        try   
        {
        	String emailFromInfo = emailInfo.getEmailFromInfo();
        	String[] fromArray = emailFromInfo.split("\\{|}");	//按{或 } 分解字符串
        	for(int i=0; i<fromArray.length; i++) {
        		if(StringUtils.isNotEmpty(fromArray[i])) {
        			String[] from = fromArray[i].split(",");
        			email.setHostName(from[0]); 					//发送方邮件服务器
    	        	email.setFrom(from[1]); 						// 发送方地址
    	        	email.setAuthenticator(new DefaultAuthenticator(from[2],from[3]));
    	        	if("1".equals(from[4])) {
    	        		email.setTLS(true);							//是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验
    	        	}
    	        	if("1".equals(from[5])) {
    	        		email.setSSL(true);  
    	        	}
    	        	ArrayList<String> emailTo = emailInfo.getEmailTo();
    	        	ArrayList<String> emailCc = emailInfo.getEmailCc();
    	        	ArrayList<String> emailBcc = emailInfo.getEmailBcc();
    	        	for(int j=0; j<emailTo.size(); j++) {
    	        		email.addTo(emailTo.get(j)); 				// 接收方
    	        	}
    	        	for(int j=0; emailCc!=null&&j<emailCc.size(); j++) {
    	        		email.addCc(emailCc.get(j)); 				// 抄送方
    	        	}
    	        	for(int j=0; emailBcc!=null&&j<emailBcc.size(); j++) {
    	        		email.addBcc(emailBcc.get(j)); 				// 秘密抄送方
    	        	}
    				email.setCharset("GB2312");						// 编码
    				email.setSubject(emailInfo.getSubject()); 		// 标题
    				email.setMsg(emailInfo.getSendMsg()); 			// 内容
    				String emailResult = email.send();
    				System.out.println("用"+from[1]+"邮箱来发送,发送结果:"+emailResult);
    				if(!StringUtils.equals("failed",emailResult)) {
    					return true;
    				}else {
    					email = null;
    					email = new SimpleEmail();
    					continue;
    				}
        		}
	        	
        	}
        } catch (EmailException e) {  
        	result = false;
        	if(logger.isErrorEnabled()){
				logger.error("发送邮件出错!");
			}
			throw new BusinessException(e.getMessage());
        } 
        return result;
    }  
    
    public static void main(String[] args)  
    {
    	ReadProperties property = new ReadProperties();
    	SendEmailInfoBean emailInfo = new SendEmailInfoBean();
    	emailInfo.setEmailFromInfo(property.readData("email_info"));
    	ArrayList<String> a = new ArrayList<String>();
    	a.add("******@qq.com");
    	a.add("xxx@163.com");
    	emailInfo.setEmailTo(a);
    	emailInfo.setSubject("请查收");
    	emailInfo.setSendMsg("这个是java程序发送邮件测试的");
    	try {
    		System.out.println("开始发送:");
			boolean result = send(emailInfo);
			System.out.println("发送结果:" + result);
		} catch (BusinessException e) {
			e.printStackTrace();
		}
    }  
}


注意:邮件发送地址是从配置文件里读取的,见后面代码介绍,我稍微改了下apache commons email 源代码,因为里面那个send方法初始化邮件信息和发送邮件会抛异常,初始化失败抛异常倒可以接受,但是因为我可能需要换个服务器重新发送,让它抛异常就不太好处理了,我想让它在某次发送失败后,继续换个发送地址重新发送,所以我将源代码里Email类的send方法,发送失败时给予返回值“failed”,代码如下:

Java代码 复制代码
  1. /**  
  2.      * Sends the previously created MimeMessage to the SMTP server.  
  3.      *  
  4.      * @return the message id of the underlying MimeMessage  
  5.      * @throws EmailException the sending failed  
  6.      */  
  7.     public String sendMimeMessage()   
  8.     {   
  9.         EmailUtils.notNull(this.message, "message");   
  10.   
  11.         try  
  12.         {   
  13.             Transport.send(this.message);   
  14.             return this.message.getMessageID();   
  15.         }   
  16.         catch (Throwable t)   
  17.         {   
  18.             String msg = "Sending the email to the following server failed : "  
  19.                 + this.getHostName()   
  20.                 + ":"  
  21.                 + this.getSmtpPort();   
  22.   
  23.             return "failed";   
  24.         }   
  25.     }  
/**
     * Sends the previously created MimeMessage to the SMTP server.
     *
     * @return the message id of the underlying MimeMessage
     * @throws EmailException the sending failed
     */
    public String sendMimeMessage()
    {
        EmailUtils.notNull(this.message, "message");

        try
        {
            Transport.send(this.message);
            return this.message.getMessageID();
        }
        catch (Throwable t)
        {
            String msg = "Sending the email to the following server failed : "
                + this.getHostName()
                + ":"
                + this.getSmtpPort();

            return "failed";
        }
    }



(三)读取配置文件类:

Java代码 复制代码
  1. package com.basekj.util;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.InputStream;   
  5. import java.util.Properties;   
  6. import org.apache.commons.lang.StringUtils;   
  7.   
  8. /**  
  9.  * 读取配置文件  
  10.  *   
  11.  * @author   
  12.  *  
  13.  */  
  14. public class ReadProperties {   
  15.        
  16.     /**  
  17.      * 读取配置文件参数  
  18.      * 传入参数名,当读取错误或无  
  19.      * 对应参数键值对时,返回空字符串。  
  20.      * @param key  
  21.      * @return result  
  22.      */  
  23.     public String readData(String key) {   
  24.         InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("system_parameter.properties");   
  25.         Properties p = new Properties();   
  26.         String result = "";   
  27.         try {   
  28.             p.load(inputStream);   
  29.         } catch (Exception e1) {   
  30.             e1.printStackTrace();   
  31.             return result;   
  32.         } finally {   
  33.             if(null != inputStream)   
  34.                 try {   
  35.                     inputStream.close();   
  36.                 } catch (IOException e) {   
  37.                     e.printStackTrace();   
  38.                     return result;   
  39.                 }   
  40.         }   
  41.         result = p.getProperty(key);   
  42.         return StringUtils.isEmpty(result)?"":result;   
  43.     }   
  44.        
  45.     public static void main(String[] args) {   
  46.         // TODO Auto-generated method stub   
  47.         String s = new ReadProperties().readData("email_info");   
  48.         String [] arr = s.split("\\{|}");   
  49.         for(String r:arr) {   
  50.             if(r != null && r.length() > 0) {   
  51.                 System.out.println(r);   
  52.             }   
  53.         }   
  54.     }   
  55.   
  56. }  
package com.basekj.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;

/**
 * 读取配置文件
 * 
 * @author 
 *
 */
public class ReadProperties {
	
	/**
	 * 读取配置文件参数
	 * 传入参数名,当读取错误或无
	 * 对应参数键值对时,返回空字符串。
	 * @param key
	 * @return result
	 */
	public String readData(String key) {
		InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("system_parameter.properties");
		Properties p = new Properties();
		String result = "";
		try {
			p.load(inputStream);
		} catch (Exception e1) {
			e1.printStackTrace();
			return result;
		} finally {
			if(null != inputStream)
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
					return result;
				}
		}
		result = p.getProperty(key);
		return StringUtils.isEmpty(result)?"":result;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = new ReadProperties().readData("email_info");
		String [] arr = s.split("\\{|}");
		for(String r:arr) {
			if(r != null && r.length() > 0) {
				System.out.println(r);
			}
		}
	}

}


(四)静态配置文件system_parameter.properties(这里配置了2个服务器)

Java代码 复制代码
  1. #6 parameters:1:email hostname,2:email from address,3:email username,4:email password,5:if tls(1:yes,0:no),6:if ssl(1:yes,0:no)   
  2. #--------------------以上是注释-------------------------------------   
  3. email_info={smtp.sina.com,test1@sina.cn,test1@sina.cn,pwd1,0,0}{smtp.163.com,test2@163.com,test2@163.com,pwd2,0,0}  
#6 parameters:1:email hostname,2:email from address,3:email username,4:email password,5:if tls(1:yes,0:no),6:if ssl(1:yes,0:no)
#--------------------以上是注释-------------------------------------
email_info={smtp.sina.com,test1@sina.cn,test1@sina.cn,pwd1,0,0}{smtp.163.com,test2@163.com,test2@163.com,pwd2,0,0}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    新版邮件编程---Apache Commons Email

    Apache Commons Email库的核心目标是消除使用JavaMail API时的一些复杂性和冗余工作,同时保持足够的灵活性以满足各种邮件需求。 Apache Commons Email支持以下主要功能: 1. **基本邮件发送**:通过SMTP(简单...

    Java通过Apache提供的Commons Email工具类实现邮箱发送验证码

    总之,Apache Commons Email为Java开发者提供了一个强大且易于使用的邮件发送工具,通过简单的代码即可实现包括发送验证码在内的各种邮件功能。在实际开发中,结合业务需求进行适当的优化和扩展,可以极大地提升开发...

    Commons: 封装Apache Commons Email简化邮件发送

    在本文中,我们将详细探讨Apache Commons Email的使用方法和核心特性。 首先,Apache Commons Email提供了多种构造邮件的方法,包括创建简单文本邮件、HTML邮件、带有附件的邮件等。例如,你可以通过`SimpleEmail`...

    apache.commons全套jar包下载

    6. Apache Commons Email: 这个模块使得发送电子邮件变得非常简单,支持HTML邮件、附件、多部分消息以及SMTP认证等功能。 这些jar包是许多Java项目中不可或缺的部分,尤其在处理系统级任务或提高代码可复用性时。...

    Apache Commons 包的使用

    本篇文章将详细讲解几个重要的 Apache Commons 模块,包括 Apache Commons Email、Apache Commons IO、Apache Commons Pool、Apache Commons DBCP、Apache Commons Dbutils 和 Apache Commons Collections,以及 ...

    Apache Commons工具集

    9. **Email**: Commons Email 提供了一个简单的API来发送电子邮件,支持HTML邮件、附件等。 10. **Execute**: 这个组件提供了一种执行外部进程并管理其生命周期的方式。 在实际开发中,Apache Commons工具集大大...

    apache commons jar(commons所有的jar包,从官网下载提供.zip

    apache commons jar(commons所有的jar包,从官网下载提供给大家) 因为涉及jar太多,包括有src源代码,只需要3分,希望大家理解,我也是从官网花了很长时间才一个一个下完,需要的请自取。全部是zip文件,每个对应的...

    commons-email-1.5.jar

    《Android应用中使用Apache Commons Email库发送邮件》 在Android应用程序开发中,有时我们需要集成邮件发送功能,以便向用户发送验证码、通知或者提供其他服务。Apache Commons Email库是一个强大的Java库,它简化...

    利用Apache Commons Email发送邮件

    这份资料是+++利用Apache Commons Email发送邮件+++的内容,希望能给有志成为IT人才一点帮助!你的进步就是对我最大的回报! Thank you!

    apache commons jar(commons所有的jar包,从官网下载提供给大家)

    daemon-1.0.15-bin commons-dbutils-1.6-bin commons-digester3-3.2-bin commons-el-1.0 commons-email-1.4-bin commons-fileupload-1.0 commons-fileupload-1.1.1 commons-fileupload-1.1 commons-file upload-...

    使用Apache-commons-email发送邮件

    Apache Commons Email库为Java开发者提供了一种简单且强大的方式来实现这一功能。这个库封装了复杂的SMTP协议,让我们可以通过几行代码轻松发送邮件。 Apache Commons Email库是Apache软件基金会的Apache Commons...

    Apache Commons Mail 封装发送邮件类

    在JavaMail中,配置和使用邮件服务可能相对复杂,而Apache Commons Mail则通过提供预定义的邮件实现和简单易用的接口来解决了这个问题。 **Apache Commons Mail基本概念** 1. **邮件组件**:Apache Commons Mail ...

    commons email,另附所需框架,导入即可

    使用Apache Commons Email时,首先需要在项目中引入依赖。如果是Maven项目,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;org.apache.commons &lt;artifactId&gt;commons-email 版本号 ``` 然后,在代码中,你...

    commons-email-1.4.jar

    1. **简单易用的API**:Apache Commons Email 提供了清晰的接口,使得创建邮件变得简单直观。开发者可以通过几个方法就能设置邮件的主题、正文、附件,以及发送者和接收者的邮箱地址。 2. **多种邮件类型支持**:该...

    commons email 发送html邮件完整优化实例

    Apache Commons Email 是一个Java库,专门用于简化电子邮件的发送。这个库提供了丰富的API,使得开发者可以轻松地构建和发送各种类型的邮件,包括HTML格式的邮件。在这个“commons email 发送html邮件完整优化实例”...

    Apache Commons 工具类介绍及简单使用 (2).pdf

    Apache Commons 工具类介绍及简单使用 Apache Commons 是一个开源的 Java 库,提供了许多实用的工具类,帮助开发者快速构建 Java 应用程序。本文将对 Apache Commons 工具类进行介绍,并提供简单的使用示例。 ...

    commons-email发送邮件

    Apache Commons Email 是一个Java库,专门用于简化电子邮件的发送。这个库是Apache Commons项目的一部分,提供了许多方便的API,使得开发者能够轻松地构建并发送包含文本、HTML内容以及附件的邮件。下面我们将深入...

    用commons-email-1.2.jar实现发邮件功能

    总结,Apache Commons Email库提供了一套强大且易于使用的API,使得在Java中发送电子邮件变得简单。通过`TestCommonEMail.java`这样的示例代码,开发者可以快速上手并掌握邮件发送的核心步骤,同时根据项目需求灵活...

    commons-email需要的几个包

    Apache Commons Email 是一个Java库,专门用于简化电子邮件的创建和发送。这个库是Apache Commons项目的一部分,它提供了许多高级功能,使得开发人员可以方便地处理复杂的邮件操作,而不需要直接与JavaMail API进行...

    commons-email-1.5-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-email:1.5; 标签:apache、commons、email、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

Global site tag (gtag.js) - Google Analytics