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

java发送邮件示例讲解

程序员文章站 2024-03-08 23:19:28
本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下 1、邮件协议 发邮件的:smtp (simple mail transport  proto...

本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下

1、邮件协议

发邮件的:smtp (simple mail transport  protocal)

收邮件的协议:pop3 (post office protocal 3)

imap 新协议 发邮件也可以收邮件。

(一步步的与服务器交互)

smtp :

java发送邮件示例讲解

2、收发邮件的过程:

一般情况下,smtp和pop3是两个服务器(主机)。

smtp邮件的端口为25。

pop3 端口 为110。

发邮件示例

1)、安装foxmail:

java发送邮件示例讲解

2)、发邮件时,要对用户名和密码进行base64编码

 //对用户名和密码进行base64编码

 @test

 public void base64(){

  string name = "wj_leaf12345";

  string pwd = "1qaz2wsx";

  base64encoder en = new base64encoder();

  name = en.encode(name.getbytes());

  pwd = en.encode(pwd.getbytes());

  system.err.println(name);

  system.err.println(pwd);

 }

3)、通过java代码发邮件

用java发邮件,必须要导入新的包

       mail.jar – 发邮件的核心包

       activation.jar – 对用户和密码加密.

       在mail.jar中有三个核心类:

       javax.mail.session – 是指与邮件服务器会话。整个项目中只要一个就可以了.

       javax.mail.message(接口) —准备发送数据信息。

       mimemessage - 可以设置类型的数据信息。

       transport – 它拥有一个方法可以发送message。

第一步:导入两个jar包

第二步:发简单的邮件

public void sendmail() throws exception{

  //第一步:声明properties对象放信息

  properties prop = new properties();

  //设置连接哪一台服务器

  prop.setproperty("mail.host","smtp.126.com");

  //设置是否验证

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

  //第二步:声明用户名和密码

  authenticator auth = new authenticator() {

   //此访求返回用户和密码的对象

   public passwordauthentication getpasswordauthentication() {

    passwordauthentication pa =

      new passwordauthentication("aaa", "sss");

    return pa;

   }

  };

  ////第二步:获取session对象

  session session =

    session.getdefaultinstance(prop,auth);

  //设置session的调试模式

  session.setdebug(true);

  //第三步:声明信息

  mimemessage mm1 =

    new mimemessage(session);

  

  //第四步:设置发件人email

  address from = new internetaddress("wj@126.com");

  mm1.setfrom(from);

  //第五步:设置收件人

  mm1.setrecipient(recipienttype.to,new internetaddress("wj@163.com"));

  mm1.setrecipient(recipienttype.cc, new internetaddress("554@qq.com"));

  mm1.setrecipient(recipienttype.bcc, new internetaddress("wj@ss.cn"));

  //第六步:设置主题

  mm1.setsubject("这是用java发的邮件3");

  mm1.setcontent("你好,这是用java发的邮件,3333再试一下", "text/plain;charset=utf-8");

  //第七步:

  transport.send(mm1);

 }

 

第三步:v发带有超连接的邮件

mm1.setsubject("这是用java发的邮件sfasdf3");

  mm1.setcontent("你好,这是用java发的邮件,<a href='http://www.baidu.com'>百度</a>", "text/html;charset=utf-8" );

  //第七步:

  transport.send(mm1);

第四步:符件的邮件

public void sendfile() throws exception{

  properties p = new properties();

  p.setproperty("mail.host","smtp.163.com");

  p.setproperty("mail.smtp.auth","true");

  session s = session.getdefaultinstance(p,new authenticator() {

   @override

   public passwordauthentication getpasswordauthentication() {

    return new passwordauthentication("ww", "123");

   }

  });

  s.setdebug(true);

 

  //声明mimemessage

  mimemessage msg = new mimemessage(s);

  msg.setfrom(new internetaddress("ww@163.com"));

  msg.setrecipient(recipienttype.to, new internetaddress("ww@126.com"));

  msg.setsubject("图片的");

  

  //第一步:声明多处理的part

  mimemultipart mm = new mimemultipart();

  //第二步:声明

  mimebodypart body1 = new mimebodypart();

  //第三步:设置符件

  datasource ds = new filedatasource(new file("./img/a.jpg"));

  datahandler dh = new datahandler(ds);

  body1.setdatahandler(dh);

  //必须要设置名称

  body1.setfilename(mimeutility.encodetext("美女.jpg"));

  mimebodypart body2 = new mimebodypart();

  //第三步:设置符件

  datasource ds2 = new filedatasource(new file("./img/b.jpg"));

  datahandler dh2 = new datahandler(ds2);

  body2.setdatahandler(dh2);

  //必须要设置名称

  body2.setfilename(mimeutility.encodetext("美女2.jpg"));

  mimebodypart body3 = new mimebodypart();

  //第三步:设置符件

  datasource ds3 = new filedatasource(new file("./img/m.mp3"));

  datahandler dh3 = new datahandler(ds3);

  body3.setdatahandler(dh3);

  //必须要设置名称

  body3.setfilename(mimeutility.encodetext("世纪末.mp3"));

  //将body1添加到mm

  mm.addbodypart(body1);

  mm.addbodypart(body2);

  mm.addbodypart(body3);

  msg.setcontent(mm);

  

  //发送

  transport.send(msg);

 }

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