java email 邮件

简介: 关键字: java email 邮件 记得曾经学习用javamail发邮件,学了2天,大概搞明白了利用javamail发邮件的方法和注意事项。

关键字: 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上是否会出现这个问题,如果有知道缘由的朋友,请多指教.
相关文章
|
Java
Java Email邮件阿里云发不了怎么处理
最近升级了一下SpringBoot的版本,结果发现之前工作的好好的邮件突然罢工了,罢工的原因还不止一个,接下来记录一下解决方案
435 0
|
2月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
12 0
|
14天前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
|
2月前
|
Java API Maven
email api java编辑方法?一文教你学会配置步骤
在Java开发中,Email API是简化邮件功能的关键工具。本文指导如何配置和使用Email API Java:首先,在项目中添加javax.mail-api和javax.mail依赖;接着,配置SMTP服务器和端口;然后,创建邮件,设定收件人、发件人、主题和正文;最后,使用Transport.send()发送邮件。借助Email API Java,可为应用添加高效邮件功能。
|
2月前
|
Java 数据安全/隐私保护 Windows
java实现邮件发送准备工作(前期配置)
java实现邮件发送准备工作(前期配置)
9 0
|
7月前
|
Java 数据安全/隐私保护
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
129 0
|
7月前
|
Java
【Java】SpringBoot邮件发送实现
这里我用的是网易免费企业邮箱。参数请不要照抄,改成适合自己的。
100 0
|
10月前
|
Java
java邮件提醒实现
最近做项目的时候,有这样一个需求,因为项目中的流程是分级流转审批的过程,所以当前人操作完成之后,需要程序的一个固定邮箱通过邮件通知下级相应人员进行处理,所以也就有了小编今天的这篇博文。
|
12月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
直接上代码:3个类,两个主要的类,一个测试类: 主类(Mail):
121 0
|
12月前
|
Java 数据安全/隐私保护 Windows
java实现邮件发送准备工作(前期配置)
java实现邮件发送准备工作(前期配置)
108 0