小背景

之前一直是小的实验,今天花了将近一天的时间将邮件客户端实现了。

具体细节

其实整个小项目就是将之前的一些命令和Java Swing的知识相结合来实现的。具体步骤如下:

  • 首先构造登录的页面,在这个页面上需要的信息就是用户名和密码,但是由于现在的第三方登录客户端的密码都是授权码,所以大家在写这个之前需要将授权码记好。

  • 第二部就是构造登录成功的界面了,这个时候需要的信息有:接收端邮箱,邮件主题,邮件内容。

  • 将界面做好之后,可以写后台代码了。首先通过TCP连接到SMTP服务器,端口号是25,接着后台与服务器进行交互,其中包括HELO、AUTH LOGIN、DATA、MAIL FROM、RCPT TO等指令,通过这些指令进行身份认证,以及消息的发送。具体的效果如下(图一是控制台打印的消息,图二是在客户端填写的相关信息,图三是接收到的邮件信息):

关键代码如下:

              try {Socket client = new Socket("smtp.qq.com",25);BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));String response = br.readLine();if(response.equals("220 smtp.qq.com Esmtp QQ Mail Server")){System.out.println("客户端已经连接到腾讯邮件服务器!!");//输入EHLO指令DataOutputStream dos = new DataOutputStream(client.getOutputStream());dos.writeBytes("HELO sunyuhu\r\n");dos.flush();response = br.readLine();if(!response.equals("250 smtp.qq.com")){System.out.println("命令错误!!!");}//输入认证指令,用户名和密码dos.writeBytes("AUTH LOGIN\r\n");dos.flush();response = br.readLine();if(!response.equals("334 VXNlcm5hbWU6")){System.out.println("命令错误!!!");}else{System.out.print("请输入用户名:");dos.writeBytes(Base64.getEncoder().encodeToString(username.getBytes())+ "\r\n");dos.flush();response = br.readLine();if(!response.equals("334 UGFzc3dvcmQ6")){System.out.println("用户名输入错误!!!");textField.setText("");textField_1.setText("");}else{System.out.println("用户名输入成功!!!");System.out.print("请输入密码:");dos.writeBytes("dm54dmJ2YWJpbXZwaGpjZQ==\r\n");dos.flush();response = br.readLine();if(!response.equals("235 Authentication successful")){System.out.println("密码输入错误!!!");textField.setText("");textField_1.setText("");textArea.setText("");}else{System.out.println("登录成功!!!");dos.writeBytes("mail from:<"+username+"\r\n");dos.flush();response = br.readLine();dos.writeBytes("rcpt to:<" +receiver +">\r\n");dos.flush();response = br.readLine();if(!response.equals("250 Ok")){System.out.println("输入错误!!!");}else{dos.writeBytes("data\r\n");dos.flush();response = br.readLine();dos.writeBytes("from:" + username + "\r\n"+"to:<"+receiver+">\r\nsubject:"+ subject + "\r\n\r\n" + content.toString()+"\r\n.\r\n");dos.flush();System.out.println(br.readLine()+ "\n发送成功!!");}}}}}else{System.out.println("未知错误!!!");}} catch (UnknownHostException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}

总结

写完了之后才发现也没有那么难,现在也算是明白了“万事开头难”的道理,以后还是要多尝试。并且如果这个小项目,加上POP3协议的话,就可以实现查看和删除邮件的功能了,后面如果有时间的话可以尝试实现。需要源码的兄弟可以下载一下,java邮件客户端

Java实现邮件客户端相关推荐

  1. 简易的java发邮件客户端

    主要是想熟悉一下jigloo插件的使用,所以做了一个发邮件的小程序,其实调用的都是人家的东西,我们自己只做了最简单的傻瓜操作,每思及此,感觉要学的东西还很多. 本人很懒,搞swing那套东西很不给力, ...

  2. 【Java】JavaMail编程实现邮件客户端-OutBox InBox

    在上一篇<JavaMail编程实现邮件客户端-总览>中我们已经说完了邮箱客户端的登录界面.主界面,在主界面上点击OutBox按钮就能够进入发件箱,点击InBox按钮就能进入收件箱.这篇文章 ...

  3. 【Java】JavaMail编程实现邮件客户端-总览

    1.实验要求. 编写图形用户界面,实现邮件客户端软件的设计与开发.用实际的邮箱账号密码进行登录. 客户端要求可以完成邮件编辑. 客户端要求可以配置与标准邮件服务器的连接. 客户端可以发送邮件,并可以粘 ...

  4. 使用java语言基于SMTP协议手写邮件客户端

    使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...

  5. Java - HtmlEmail 邮件发送

    Java 项目中常常回遇到发送邮件 Java 发送邮件有几种,今天先给大家介绍用 HtmlEmail 来发送邮件,我这里是用 Maven 来搭建的 HtmlEmail 可以抄带HTML 首先 需要导入 ...

  6. Java发邮件-QQ服务器认证

    2019独角兽企业重金招聘Python工程师标准>>> Java发邮件的几种方式 JavaMail Commons Email Spring Mail JavaMail是Java提供 ...

  7. java实现邮件发送准备工作(前期配置)

    本文主要用的邮件客户端是:office 2007的outlook,服务器是apache-james-2.3.2,首先我们来配置一下这个james服务器: 1.将james服务器解压到硬盘目录下,注意目 ...

  8. smpp客户端_SMPP Java示例(客户端)

    smpp客户端 这篇文章通过创建一个简单的SMPP客户端向移动用户发送短信来提供SMPP Java示例,使用该客户端我们可以简单地提交以将消息发送给单个移动用户,也可以一次将消息广播给多个移动用户.另 ...

  9. SMPP Java示例(客户端)

    这篇文章通过创建一个简单的SMPP客户端向移动用户发送短信来提供SMPP Java示例,使用该客户端我们可以简单地提交以向单个移动用户发送消息,也可以一次将消息广播给多个移动用户.另外,我们将验证交货 ...

最新文章

  1. Python 函数学习
  2. php laravel用的多不,php-Laravel多个可选参数不起作用
  3. [置顶] Android输入输出系统之TouchEvent流程
  4. 技术点不亲身实验一遍,难免会被网文唬
  5. 2字节十六进制浮点数 qt_Qt二进制文件操作(读和写)详解
  6. Swagger2 最全注解说明(转载)
  7. 项目管理学习总结(13)——高效能技术Leader的30条军规
  8. 想将有色彩的视频进行去色处理就这样做
  9. 如何优雅地压缩一张图片
  10. 什么是软件测试中的探索性测试(完整指南)(一)
  11. AutoCAD2022下载安装教程
  12. 计算机显示器黑屏首先检查,电脑显示器黑屏怎么回事?教你处理方案
  13. wpf中使用ListView
  14. 总结jQuery中的DOM节点属性
  15. 民间53个不传之密 ,看了不后悔
  16. Nginx:[emerg] unknown directive “server” in*******
  17. 如何使用 LK 字幕脚本工具
  18. shui jisfnemskddp psijsjfsif
  19. c语言intrins头文件,结合单片机学习板学习c语言之流水灯制作 intrins.h头文件
  20. 一文看懂YoloV4 | YoloV4最新解读!Yolov4重磅推出!yolov4深入理解!

热门文章

  1. matlab如何使用源代码,rosenbrock函数的matlab源程序代码是怎么样的?
  2. mongoDB conf 文件配置详解
  3. 数据湖iceberg-day02-Hive与Iceberg整合
  4. 数据库的几种重要作用
  5. 图像配准方面的算法总结
  6. kafka中文教程(一)
  7. TM1638模块驱动(stm32,可以显示led灯,数码管,按键操作)(包含全部功能)
  8. 最小二乘法曲线拟合 C语言实现
  9. 关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解
  10. SRS流媒体服务器搭建流程-简单实用版