用apache的Mail包(commons-email-1.2.jar),发送邮件

本文介绍了如何在CMD中使用Apache Commons Email库发送邮件,强调了需要正确配置依赖的jar包,避免NoClassDefFoundError异常。同时,提供了在Linux shell下设置CLASSPATH的方法,并展示了如何设置SSL、TLS、代理等参数,以及发送邮件的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,脱离了IDE,在控制台CMD发mail,除了commons-email-1.2.jar,还需要(间接)依赖哪些jar包?


答案是黄色部分的文字:


G:\Develop\workspace\XXX\WEB-INF\classes>java -classpath ..\lib\commons-email-1.2.jar;..\lib\commons-lang-2.4.jar;..\lib\mail-1.4.1.jar;.com.xxx.util.MailSender


如果jar加载不全,就会有类似下面的异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/mail/EmailException


Caused by: java.lang.ClassNotFoundException: org.apache.commons.mail.EmailException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Could not find the main class: com.xxx.util.MailSender.  Program will exit.


PS:classes是com的父目录,com是xxx的父目录……。MailSender如果有package结构,需要注意这点


如果是在Linux的shell下,执行同样的class,是这样的:

CLASSPATH=.
for jar in ./*.jar
do

#notice the file sperator in Linux is : but not ; in Windows

CLASSPATH=$CLASSPATH:$jar
done
echo "$CLASSPATH"
java -classpath $CLASSPATH com.andy.util.MailSender&


2,正确的发Mail姿势是什么?注意注释:


/**

* @para email : like this -->  SimpleEmail email = new SimpleEmail();   

**/

public static void sendMail(
Email email,
boolean throughtProxy, 
String receiverAddrs, 
String mailSubject, 
String mailCharset,
String mailMessage){     
        

//email.setSSL(Boolean.TRUE);//如果需要SSL,则打开
//email.setSslSmtpPort("465");
 
//不要乱打开这个开关。要看邮件发送服务是不是使用这个安全协议,否则就会抛异常:javax.net.ssl.SSLHandshakeException
        //email.setTLS(true); //如果需要TLS,则打开        
        email.setHostName(smtpServer);
   
        email.setAuthentication(senderAddr, senderPassword);
        

//如有需要,设置代理
        if(throughtProxy){
                Properties props = System.getProperties();
       props.setProperty("proxySet", "true");
       props.setProperty("socksProxyHost", socksProxyIp);
       props.setProperty("socksProxyPort", socksProxyPort);
        }
        try{             
            email.setFrom(senderAddr, senderDisplayName);//发件人                 
            email.setSubject(mailSubject);//邮件题目                 
            email.setCharset(mailCharset);//邮件编码,如("GB2312");                  
            email.setMsg(mailMessage);//邮件正文            

//收件人,可多个
            String[] receivers = receiverAddrs.split(";");
            for(int i = 0; i< receivers.length; i++){
             if(RegexpValidation.isValidMailAddress(receivers[i])){//合法mail地址判定
            email.addTo(receivers[i]);  
            }                                  
            }
            email.send(); 
                 
        } catch (EmailException e) {     
            e.printStackTrace();     
        }      
    }   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值