热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

java发送邮件示例讲解

这篇文章主要为大家详细介绍了java发送邮件示例的全过程,温习邮件协议,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

1、邮件协议

发邮件的:SMTP (Simple Mail Transport  Protocal)

收邮件的协议:pop3 (Post Office Protocal 3)

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

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

SMTP :

2、收发邮件的过程:

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

Smtp邮件的端口为25。

POP3 端口 为110。

发邮件示例

1)、安装foxmail:

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发的邮件,百度", "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);

 }

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


推荐阅读
  • mysql oneproxy稳定吗_Mysql 中间件 oneProxy总结
    建议使用之前把官方的文档全部通读一遍这里提供一个我的网盘地址oneproxy百度网盘0.先对oneproxy有个大概的了解,知道他所处的位置1.MySQL服务器创建t ... [详细]
  • 云计算安全,主要面临哪些威胁?
    云计算是一种新的计算方式,它依托于互联网,以网络技术、分布式计算为基础,实现按需自服务、快速弹性构建、服务可测量等特点的新一代计算方式。然而,任何以互联网为基础的应用都存在着一定危 ... [详细]
  • 文章目录前言必知必会的软件服务器分类机架式服务器塔式服务器刀片式服务器三者的区别虚拟服务器(云服务器)服务器的硬件组成服务器常见的品牌前言本文是循序渐进学linux的第一课,为 ... [详细]
  • npmimportuse这里我记录一下,视频地址和封面地址均引用的是服务器端得,本地的视频和图片 ... [详细]
  • webpack 配置IP 和端口号
    最近在用webpack搭建本地服务器的时候,因为不想总是用localhost来跑,所以对webpack.config.js进行了配置,如下devServer:{publicPath ... [详细]
  • 利用ipv6技术,废旧笔记本变成server
    如果你家的路由器已经get到了ipv6地址,并且你家的电脑也获取了有效的ipv6地址,在广域网的设备可以访问到。那恭喜你,再配合我这个dd ... [详细]
  • selenium 定位方式3css_selector
    关于页面元素定位,可以根据id、class、name属性以及link_text。其中id属性是最理想的定位方式,class与name属性, ... [详细]
  • 本篇内容主要讲解“JavaScript在网页设计中的嵌入应用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小 ... [详细]
  • Step1:启动服务器首先启动zookeeperbinzookeeper-server-start.shconfigzookeeper.properties接着启动kafka服务 ... [详细]
  • Redis 外部访问设置
    1、错误原因Redis搭建好后一般都是使用编程语言进行连接调用,默认Redis的设置是不允许外界访问的,连接Redis只能通过本地(127.0.0.1)来连接,而不能使用网络IP( ... [详细]
  • Echarts 3D地图图表
    需求:实现如图所示的3D地图图表(1)原本使用的highcharts没有3d地图的功能,搜索插件也没有可替代的方案ÿ ... [详细]
  • YII框架basic和advanced项目模板的区别:功能 ... [详细]
  • 写在前面:  最近项目中使用到了工作流,虽然此部分不是自己需要完成的,但是也涉及到了要调用写的接口。正好有时间,就了解下,以便之后能在其他项目中用到时,不至于什么都不知道什么都不了解。   ... [详细]
  • 一个不错的JDBC连接池教程(带具体例子)
    1.前言数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游 ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
author-avatar
jzbde
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有