首先感谢张孝祥老师的JAVA邮件开发视频。
本文包括3部分,一、Java邮件开发的目标 二、邮件的基础知识 三、实践SHELL中收发邮件
一、目标
1.生成带附件和图片的邮件以及发送邮件
2.接收邮件和解析邮件内容
3.解决附件中的中文乱码问题
4.Tomcat中JavaMail支持和冲突解决
5.SMTP邮件服务器的开发
二、邮件的基本知识
1.邮件服务器:gmail、126、163等等
提供功能:A.接收用户投递的邮件;(SMTP)
B.将用户投递的邮件转发给目标邮件服务器;(SMTP)
C.接收其他服务器转来的邮件并将它存储在用户邮件中;(SMTP)
D.为前来读取邮件的用户提供读取服务(POP3/IMAP)
说明:只有用户从服务器取邮件用的才是POP3协议
按照通信协议区分:SMTP服务器和POP3/IMAP服务器
2.电子邮箱
电子邮箱就是用户在邮件服务器上申请的一个账户。
邮件服务器把接收到的邮件保存到为某个账户所分配的邮箱空间中;用户通过其申请的用户名和密码登录到邮件服务器上查收该地址已接受的邮件
3.邮件客户端软件
帮助用户将邮件发送到SMTP服务器和从POP3/IMAP服务器读取用户的点子邮件
4.邮件传输协议
SMTP(Simple mail transfor protocal)简单邮件传输协议,定义了邮件客户端软件与SMTP服务器之间,以及SMTP服务器之间的通信规则
POP3(Post Office Protocol)邮局协议,定义了邮件客户端软件与POP3服务器之间的通信规则。
IMAP(Internet Message Access Protocal)Internet消息访问协议,是对POP3协议的一种扩展,定义了邮件客户端软件与IMAP服务器之间的通信规则。
5.电子邮件传输过程
用户1发收邮件<—smtp/pop3—>邮件服务器1<—smtp—>邮件服务器2<—pop3/smtp—>用户2收发邮件
三、实践SHELL中收发邮件
步骤一:注册126和yeah账号
步骤二:编程序将用户名和密码以BASE64编码实现
步骤三:实践下面的命令
1.账号准备
下面是我申请的测试账号
[email protected]/h123456( pop.126.com/smtp.126.com)
[email protected]/h123456(pop.yeah.net/smtp.yeah.net)
2.使用BASE64编码用户名和密码
java_mail_test经BASE64编码后为amF2YV9tYWlsX3Rlc3Q=
h123456经BASE64编码后为aDEyMzQ1Ng==
a.使用在线编码工具
http://maclife.net/tools/base64/
b.自己编码实现
解决eclpse无法引入sun.misc.BASE64Encoder
public class Base64Util {
public static void main(String[] args) throws IOException { BASE64Encoder encoder = new BASE64Encoder(); System.out.println("please insert user name:"); String userName = new BufferedReader( new InputStreamReader(System.in)).readLine(); System.out.println(encoder.encode(userName.getBytes())); System.out.println("Please input password:"); String passWord = new BufferedReader( new InputStreamReader(System.in)).readLine(); System.out.println(encoder.encode(passWord.getBytes())); } }
3.手动收发邮件
发送邮件(cmd——>telnet smtp.126.com 25 )
接收邮件(cmd——>telnet pop.yeah.net 110)
问题:SMTP邮件服务器之间怎么进行认证?