热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java发送邮件示例讲解

java发送邮件示例讲解-本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下1、邮件协议发邮件的:SMTP(SimpleMailTransport Protocal)

本文实例讲解了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);

 }

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


推荐阅读
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
author-avatar
粪青12_601
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有