1、邮件原理与JavaMail开发简介1 一、 为什么要学习javamail开发? 现在很多WEB应用在开发时都需要集成邮件发送功能,例如: 给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail。 给过生日的注册会员自动发送一封表示祝贺的E-Mail 。 将网站的最新活动信息通过E-Mail发送给所有的注册会员。 等等 … 这些功能的实现都需要软件开发人员在开发WEB应用中编写相应的邮件处理程序。 二、学习javamail主要的两部分 1生成邮件 2发送接收邮件 三、 邮件开发涉到的一些基本概念 1邮件服务器 要在Internet上提供电子邮件功能,必须
2、有专门的电子邮件服务器。例如现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。 这些服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中 2电子邮箱 电子邮箱(E-mail地址)的获得需要在邮件服务器上进行申请 ,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个帐户。用户在邮件服务器上申请了一个帐号后,邮件服务器就会为这个帐号分配一定的空间,用户从而可以使用这个帐号以及空间,发送电子邮件和保存别人发送过来的电子邮件。 3 SMTP协议 用户连上邮件服务器后,要想给它发送一封电子邮件
3、需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。 因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25) telnet SMTP协议 ehlo 主机名 auth login //经过base64编码后的用户名和密码 mail from:csdn@ //发件人邮箱 rcpt to:csdn@ //收件人邮箱 Data .(点号代表邮件内容的结束) Quit 例: 开始------运行cmd telnet 25 ehlo dell //dell 为主机名 auth login ODk
4、xN //经过base64编码后的用户名
saXUxMzE0 //经过base64编码后的密码
mail from:
5、件服务器称之为POP3服务器。(110)
telnet
POP3协议
user
6、bcc//暗送 字段 邮件体 邮件内容 利用RFC822文档漏洞发送假冒邮件 四、 实例 1利用base64将用户名和密码加密 public class Demo { public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入用户名:"); String name=br.readLine(); Syste
7、m.out.println("请输入密码:"); String pass=br.readLine(); BASE64Encoder bc = new BASE64Encoder(); System.out.println("加密的用户名:"+bc.encode(name.getBytes())+" \n"+bc.encode(pass.getBytes())); } } 2利用Socket发送邮件 public class SendMailBySocket { public static void main(String[] args) throws Exc
8、eption { Socket sk=new Socket("",25); //返回此套接字的输出流 OutputStream os=sk.getOutputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream())); System.out.println(br.readLine()); os.write("ehlo dell\r\n".getBytes()); System.out.println(br.read
9、Line()); System.out.println(br.readLine()); System.out.println(br.readLine()); os.write("auth login\r\n".getBytes()); System.out.println(br.readLine()); os.write("cmVk=\r\n".getBytes()); System.out.println(br.readLine()); os.write("cmV=\r\n".getBytes()); System.out.pr
10、intln(br.readLine());
os.write("mail from:






