欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于java使用JavaMail发送邮件

程序员文章站 2024-03-11 14:17:01
一、邮件的相关概念 邮件协议。主要包括: smtp协议:simple mail transfer protocol,即简单邮件传输协议,用于发送电子邮件 pop3协议...

一、邮件的相关概念

邮件协议。主要包括:

smtp协议:simple mail transfer protocol,即简单邮件传输协议,用于发送电子邮件

pop3协议:post office protocol 3,即邮局协议的第三个版本,用于接收邮件

imap协议:internet message access protocol,即互联网消息访问协议,是pop3的替代协议

--------------------------------------------------------------------------------

 二、搭建james邮件服务器

 james是apache的一个开源项目,纯java实现

 搭建james服务器

 ① 下载apache-james-2.3.2.zip解压

 ② 运行bin目录下的run.bat即可启动服务器[telnet  localhost 4555]

 ③ 通过apps\james\sar-inf\config.xml配置服务器

 注:先到bin下run一道。 放如非中文目录, 得再控制面板开启telnet客户端

--------------------------------------------------------------------------------

 三、安装outlook[邮件客户端]

产品秘钥:pqdv9-gpdv4-crm4d-phdth-4m2mt

创建用户账号

一、使用telnet连接james的remote administration tool

二、以管理员身份登录

三、使用adduser命令添加用户

--------------------------------------------------------------------------------

四、配置outlook邮件客户端

为了方便查看,可以配置microsoft outlook邮件客户端,保证james邮件服务器是启动状态,启动microsoft outlook.

选择“工具”->“选项”,打开“选项”面板。选择“邮件设置”并点击“电子邮件账户”,打开“账号设置”面板。在“电子邮件”选项卡下新建邮件账户

--------------------------------------------------------------------------------

五、案例[搭建james邮件服务器]

需求说明:

在本机搭建james邮件服务器,自定义服务器的名称。

创建两个测试用户。

在microsoft outlook中配置其中一个测试用户为outlook邮件账户

基于java使用JavaMail发送邮件

--------------------------------------------------------------------------------

 六、使用javamail发送电子邮件(案例)

 需求:

使用javamail技术,实现从a账户给b账户发送一封电子邮件,标题为“会议通知”,邮件内容为“xx你好!请于明天下午16:00 准时到b01会议室召开技术讨论会。”通过outlook 客户端查看邮件程序发送的邮件是否发送成功

关键代码:

创建一个类emailauthenticator并继承自authenticator,并植入用户名和密码

基于java使用JavaMail发送邮件

 创建mail类设置邮件信息:

public class mail {

 private string mailserver,from,to,mailsubject,mailcontent;

 private string username,password;

 public mail(){

   //设置邮件信息

   //进行认证登录的用户名

   username="hq@mail.com";

   //认证密码

   password="hq";

   //认证的邮箱对应的邮件服务器

   mailserver="192.168.17.176";

   //发件人信息

   from="wj";

   //收件人信息

   to="wj@mail.com";

   //邮件标题

   mailsubject="我们都是好孩子333";

   //邮件内容

   mailcontent="这是一封测试邮件!如有雷同,纯属不可能";

 }

 //设置邮件服务器

 @suppresswarnings("static-access")

public void send(){

   properties prop=system.getproperties();

   //指定邮件server

   prop.put("mail.smtp.host", mailserver);

    

   //是否开启认证

   prop.put("mail.smtp.auth", "true");

    

   //smtp协议的

   prop.put("mail.smtp.port", "25");

   //产生session服务

   emailauthenticator mailauth=new emailauthenticator(username, password);

   session mailsession=session.getinstance(prop,(authenticator)mailauth);

    try {

      //封装message对象

      message message=new mimemessage(mailsession);

      

      message.setfrom(new internetaddress(from)); //发件人

      message.setrecipient(message.recipienttype.to, new internetaddress(to));//收件人

      message.setsubject(mailsubject);

      //设置内容(设置字符集处理乱码问题)

      message.setcontent(mailcontent,"text/html;charset=gbk");

      message.setsentdate(new date());

      //创建transport实例,发送邮件

      transport tran=mailsession.gettransport("smtp");

      tran.send(message,message.getallrecipients());

      tran.close();

      

    } catch (exception e) {

      e.printstacktrace();

    }

 } 

测试类:  

public class mytest {

  public static void main(string[] args) {

    mail mail=new mail();

    mail.send();

    system.out.println("success!");

  }
} 

基于java使用JavaMail发送邮件

基于java使用JavaMail发送邮件

--------------------------------------------------------------------------------

七、发送带附件的mail

public class mailwithattachment {

  private javamailsender mailsender; //必须使用 javamailsender

  public void setmailsender(javamailsender mailsender) {

    this.mailsender = mailsender;

  }

   

  public void send() throws messagingexception,ioexception{

    mimemessage mimemessage = mailsender.createmimemessage();

    mimemessagehelper helper = new mimemessagehelper(mimemessage, true, "utf-8");

    helper.setfrom("hq@mail.com");

    helper.setto("wj@mail.com");

     

    helper.setsubject("哈哈哈");

    helper.settext("每日一笑,开开心心!!!");

    //添加附件1

    classpathresource file1 = new classpathresource(

                    "/cn/bdqn/attachfiles/test.doc");

    helper.addattachment(file1.getfilename(), file1.getfile());

    //添加附件2:附件的文件名为中文时,需要对文件名进行编码转换,解决乱码问题

    classpathresource file2 = new classpathresource(

                    "/cn/bdqn/attachfiles/附件测试文件.doc");

    helper.addattachment(mimeutility.encodeword(file2.getfilename()),file2.getfile());

    mailsender.send(mimemessage);

  }

} 

测试类:  

public class mailtest {

  public static void main(string[] args){

    applicationcontext context = new classpathxmlapplicationcontext("applicationcontext.xml");

     

    /*测试带附件的邮件*/

    try{

      mailwithattachment mailwithattach = (mailwithattachment)context.getbean("mailwithattachment");

      mailwithattach.send();

    }catch(exception e){

      system.out.print(e.tostring());

    }

  }

}  

applicationcontext.xml:大配置  

 基于java使用JavaMail发送邮件

基于java使用JavaMail发送邮件

基于java使用JavaMail发送邮件

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。