java email 邮件

本文介绍如何使用commons-email-1.1.jar库进行邮件发送,包括配置SMTP服务器、设置邮件内容及格式、添加附件等步骤。

关键字: java email 邮件

记得曾经学习用javamail发邮件,学了2天,大概搞明白了利用javamail发邮件的方法和注意事项。

这周末在网上闲逛时,发现了另外一个发邮件的好东东。
commons-email-1.1.jar: 这是Apache组织下的一个项目,主要就是对java的邮件功能进行了封装,用起来更加方便,简单。

接下来我们就说说这个jar包。

首先肯定得下载commons-email-1.1.jar,并下载mail.jar和activation.jar(它们可以从sun的网站上下载,从下载的javamail和jaf中找到)。

如果没有mail.jar,则会有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Message 这样的错误提示。

如果没有activation.jar,则会有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource 这样的错误提示。

下面是一个简单的测试。
Java代码
import org.apache.commons.mail.EmailException;    
import org.apache.commons.mail.SimpleEmail;    
   
public class Send     
{    
    public Send()    
    {    
            
    }    
        
    public static void main(String[] args)    
    {    
        send();    
    }    
        
    public static void send()    
    {    
        SimpleEmail email = new SimpleEmail();       
        email.setTLS(true);            
        email.setHostName("smtp.gmail.com");          
        email.setAuthentication(" ***@gmail.com", "***");   //用户名和密码    
            
        try     
        {    
            email.addTo(" lifangxin2050@163.com"); //接收方    
            email.setFrom(" lifangxin2050@gmail.com");       //发送方      
            email.setSubject("Java Mail Test");         //标题       
            email.setMsg("Just a simple send test .");   //内容       
            email.send();     
                
        } catch (EmailException e) {    
            e.printStackTrace();    
        }     
    }    
}  
import org.apache.commons.mail.EmailException; 
import org.apache.commons.mail.SimpleEmail; 
 
public class Send  

    public Send() 
    { 
         
    } 
     
    public static void main(String[] args) 
    { 
        send(); 
    } 
     
    public static void send() 
    { 
        SimpleEmail email = new SimpleEmail();    
        email.setTLS(true); //是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验
//      email.setSSL(true);       
        email.setHostName("smtp.gmail.com");       
        email.setAuthentication(" ***@gmail.com", "***");   //用户名和密码 
         
        try  
        { 
          email.addTo(" lifangxin2050@163.com"); //接收方 
            email.addCc(" ss327@163.com"); //抄送方   
            email.addBcc(" ss377@163.com"); //秘密抄送方
            email.setSubject("Java Mail Test");         //标题    
            email.setMsg("Just a simple send test .");   //内容    
            email.send();  
             
        } catch (EmailException e) { 
            e.printStackTrace(); 
        }  
    } 
}
上面的邮件标题和内容用的都是英文,如果改为中文呢?我试了一下,结果邮件标题不是乱码,而邮件内容则中文部分是乱码。设置其charSet为GB2312或者UTF-8后就可以发送中文邮件了,显示正常了。如下面的代码。

Java代码
import org.apache.commons.mail.EmailException; 
import org.apache.commons.mail.SimpleEmail; 
 
public class Send  

    public Send() 
    { 
         
    } 
     
    public static void main(String[] args) 
    { 
        send(); 
    } 
     
    public static void send() 
    { 
        SimpleEmail email = new SimpleEmail();    
        email.setTLS(true);         
        email.setHostName("smtp.gmail.com");       
        email.setAuthentication(" lifangxin2050@gmail.com", "sdzzczqqyyxy");    
         
        try  
        { 
            email.addTo(" lifangxin2050@163.com"); 
            email.setFrom(" lifangxin2050@gmail.com");       //我方    
             
            email.setSubject("Java发送邮件测试");                 //标题    
             
            email.setCharset("GB2312");                     //设置Charset 
             
            email.setMsg("这是一封Java程序发出的测试邮件。");     //内容    
             
            email.send();  
             
        } catch (EmailException e) { 
            e.printStackTrace(); 
        }  
    } 
怎么样?简单吧~~~
有人这时说到了网页邮件,其实只需要把上面SimpleEmail换成HtmlEmail,然后设置邮件内容的方法由setMsg(String str)变为setHtmlMsg(String str)就可以了,这样就可以再邮件里使用<br/>等html标签来控制邮件的格式了.
还有人问,那么附件呢?别急,我们马上就来做个带附件发送的代码

import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
publicclass AttachmentMailTest {
    publicstaticvoid main(String[] args) throws EmailException, MalformedURLException {
//     创建一个Email附件
       EmailAttachment emailattachment = new EmailAttachment();
       emailattachment.setPath("/biao_05.jpg");
//     emailattachment.setURL(new URL(" http://www.blogjava.net/bulktree/picture/bulktree.jpg"));
       emailattachment.setDisposition(EmailAttachment.ATTACHMENT);
       emailattachment.setDescription("This is Smile picture");
       emailattachment.setName("bulktree");
//     创建一个email
       MultiPartEmail multipartemail = new MultiPartEmail();
       multipartemail.setHostName("smtp.163.com");
       multipartemail.addTo(" bulktree@126.com", "bulktree");
       multipartemail.setFrom(" bulktree@163.com", "bulktree");
       multipartemail.setAuthentication("bulktree", "123456");
       multipartemail.setSubject("This is a attachment Email");
       multipartemail.setMsg("this a attachment Eamil Test");
       //添加附件
       multipartemail.attach(emailattachment);
       //发送邮件
       multipartemail.send();
      System.out.println("The attachmentEmail send sucessful!!!");
    }
}
就这样,附件也发送成功了,大家可以试一下,另外这个项目是开源的,大家可以取下载它的src来看看,我暂时就说到这儿..

不过用这个commons-email-1.1.jar实现发邮件还是有2个值得注意的地方:
  1.前面提到mail.jar和activation.jar包的问题,这两个包需要额外下载并且必不可少的两个包
  2.不知是否是我使用错误或者软件环境导致,我在第一次使用时,出现了一个奇怪的异常:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
在网上有人说是因为JavaEE版本和JavaMail的版本不一致导致的.我用的是jdk1.6.查了半天,没找到是哪里冲突了,于是我建web项目时,选择1.4版本,于是没有出现任何问题,可以正常使用,估计应该是myeclipse建项目时自带的jar包引起了这个问题.我用的是myeclipse 6.0.不知道在eclipse或其他版本的myeclipse上是否会出现这个问题,如果有知道缘由的朋友,请多指教.
【轴承故障诊断】加权多尺度字典学习模型(WMSDL)及其在轴承故障诊断上的应用(Matlab代码实现)内容概要:本文介绍了加权多尺度字典学习模型(WMSDL)在轴承故障诊断中的应用,并提供了基于Matlab的代码实现。该模型结合多尺度分析与字典学习技术,能够有效提取轴承振动信号中的故障特征,提升故障识别精度。文档重点阐述了WMSDL模型的理论基础、算法流程及其在实际故障诊断中的实施步骤,展示了其相较于传统方法在特征表达能力和诊断准确性方面的优势。同时,文中还提及该资源属于一个涵盖多个科研方向的技术合集,包括智能优化算法、机器学习、信号处理、电力系统等多个领域的Matlab仿真案例。; 适合人群:具备一定信号处理和机器学习基础,从事机械故障诊断、工业自动化、智能制造等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习并掌握加权多尺度字典学习模型的基本原理与实现方法;②将其应用于旋转机械的轴承故障特征提取与智能诊断;③结合实际工程数据复现算法,提升故障诊断系统的准确性和鲁棒性。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注字典学习的训练过程与多尺度分解的实现细节,同时可参考文中提到的其他相关技术(如VMD、CNN、BILSTM等)进行对比实验与算法优化。
【硕士论文复现】可再生能源发电与电动汽车的协同调度策略研究(Matlab代码实现)内容概要:本文档围绕“可再生能源发电与电动汽车的协同调度策略研究”展开,旨在通过Matlab代码复现硕士论文中的核心模型与算法,探讨可再生能源(如风电、光伏)与大规模电动汽车接入电网后的协同优化调度方法。研究重点包括考虑需求侧响应的多时间尺度调度、电动汽车集群有序充电优化、源荷不确定性建模及鲁棒优化方法的应用。文中提供了完整的Matlab实现代码与仿真模型,涵盖从场景生成、数学建模到求解算法(如NSGA-III、粒子群优化、ADMM等)的全过程,帮助读者深入理解微电网与智能电网中的能量管理机制。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、智能电网、电动汽车等领域技术研发的工程人员。; 使用场景及目标:①用于复现和验证硕士论文中的协同调度模型;②支撑科研工作中关于可再生能源消纳、电动汽车V2G调度、需求响应机制等课题的算法开发与仿真验证;③作为教学案例辅助讲授能源互联网中的优化调度理论与实践。; 阅读建议:建议结合文档提供的网盘资源下载完整代码,按照目录顺序逐步学习各模块实现,重点关注模型构建逻辑与优化算法的Matlab实现细节,并通过修改参数进行仿真实验以加深理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值