当前位置: 移动技术网 > IT编程>开发语言>Java > 基于java使用JavaMail发送邮件

基于java使用JavaMail发送邮件

2019年07月22日  | 移动技术网IT编程  | 我要评论

一、邮件的相关概念

邮件协议。主要包括:

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邮件账户

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

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

 需求:

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

关键代码:

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

 创建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!");

  }
} 

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

七、发送带附件的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:大配置  

 

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网