关于Javamail的配置和简单应用
来源:互联网 发布:日本现代著名作家知乎 编辑:程序博客网 时间:2024/05/21 22:43
Javamail 是提供给开发者处理电子邮件相关的编程接口,可以方便的执行些常用的邮件传输,而邮件开发中涉及到一些基本概念 :
邮件服务器:
要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。例如现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。
这些服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。
电子邮箱:
电子邮箱(E-mail地址)的获得需要在邮件服务器上进行申请,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个帐户。用户在邮件服务器上申请了一个帐号后,邮件服务器就会为这个帐号分配一定的空间,用户从而可以使用这个帐号以及空间,发送电子邮件和保存别人发送过来的电子邮件。
而在邮件发送和接收中涉及到邮件传输协议和邮件服务器类型.
SMTP协议(发送邮件)
用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。
因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25)
用法
telnet smtp.sina.com (连接新浪的服务器)
SMTP协议
ehlo 主机名
auth login //经过base64编码后的用户名和密码
mail from:redarmycsdn@sohu.com
rcpt to:redarmycsdn@sina.com
Data .号代表邮件内容的结束
quit
POP3协议(接收邮件)
同样,用户若想从邮件服务器管理的电子邮箱中接收一封电子邮件的话,他连上邮件服务器后,也需要遵循一定的通迅格式,POP3协议用于定义这种通讯格式。
因而,通常我们也把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器。(110)
– telnet pop.sina.com
– POP3协议
• user<SP>username<CRLF>
• pass<SP>password<CRLF>
• stat<CRLF> 返回邮箱的统计信息
• list<SP>[msg#]<CRLF>返回某一封邮件的统计信息
• retr<SP>msg#<CRLF> 最重要的一个命令
• quit<CRLF>
• 使用POP3协议手工接收邮件
Base64编码
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名");
String username = br.readLine();
System.out.println("请输入密码");
String pass = br.readLine();
BASE64Encoder bc = new BASE64Encoder();
System.out.println("加密用户名:"+bc.encode(username.getBytes())+" /n"+bc.encode(pass.getBytes()));
演示邮件的发送
• 准备实验环境
– 提前在sohu 和sina上注册一个免费帐号
– 获取smtp和pop3服务器的名称
• Sina或 sohu会在其帮助中心里提示管理当前注册帐号的邮件服务器的主机名。
– 编写base64编码程序对用户名和密码进行编码。
– 手工使用SMTP协议发送电子邮件
– 编写Socket程序发送电子邮件
• 如何配置outlook收发邮件
• 邮件服务器的配置
• http://mail.sohu.com/mapp/help/mail/help2.jsp
• http://mail.sina.com.cn/help2/client01.html
应用:
首先进入DOS界面:
1 telnet stmp.sina.com 25
2 ehlo Lenovo
3 quth login
4 base64编码后用户名
5 base64编码后密码
6 mail from:<aa@sina.com>
7 rcpt to: <bb@sina.com>
8 data
9 Hello(内容)
10 .
11 Quit
Ok之后就会有一封从aa@sina.com向bb@sina.com发送的一封邮件 内容是Hello
如果想要在邮件上加入主题、发件人,那就要用到RFC822文档。
RFC822文档
用法:在data中加入
from:aa@sina.com------发信人
to:bb@sina.com---------收信人
subject:Hello--------------主题
接下来,再附上Socket的一个简单应用
Socket通常实现网络上客户言方和服务方的连接。是TCP/IP协议的一个十分流行的编辑界面。一个Socket由一个IP地址和一个商品号唯一确定。
//创建Socket对象
Socket sk=new Socket("smtp.qq.com",25);
//创建输出流
OutputStream os=sk.getOutputStream();
//创建输入流
BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
System.out.println(br.readLine());
os.write("ehlo mmm/r/n".getBytes());
System.out.println(br.readLine());
System.out.println(br.readLine());
System.out.println(br.readLine());
System.out.println(br.readLine());
System.out.println(br.readLine());
System.out.println(br.readLine());
os.write("auth login/r/n".getBytes());
System.out.println(br.readLine());
os.write("base64编码后的账号/r/n".getBytes());
System.out.println (br.readLine ());
os.write("base64编码后的密码/r/n".getBytes());
System.out.println (br.readLine ());
os.write ("mail from :< 123456@qq.com>/r/n".getBytes ()); //mail from
System.out.println (br.readLine ());
os.write ("rcpt to:<654321@qq.com>/r/n".getBytes());//rcpt to
System.out.println (br.readLine ());
os.write ("data/r/n".getBytes());//data
System.out.println (br.readLine ());
os.write ("Help!!!!/r/n".getBytes ());
os.write ("./r/n".getBytes ());
System.out.println (br.readLine ());
os.write ("quit/r/n".getBytes ());
System.out.println (br.readLine ());
os.close ();
br.close ();
sk.close ();
- 关于Javamail的配置和简单应用
- javaMail的简单应用
- JavaMail应用:安装和配置常见问题的解答
- JavaMail简单应用
- 关于struts2和javamail的配合使用
- 关于js和div的简单应用
- 关于Mybaties 的简单应用和 入门
- JSPWiki的配置过程和简单应用
- NHibernate1.2 的配置和简单应用!!!!
- ANT的配置和简单应用
- 关于JavaMail的应用——发送普通的邮件
- javaMail的jsp应用
- 简单的JavaMail例子
- javamail的简单使用
- 一个简单的javaMail
- 简单的JavaMail教程
- javamail的简单使用
- javamail的简单使用
- spring—IoC初步体验
- javamail邮件发送
- C++实现句柄类(一)
- Hibernate实体映射
- 终于实现通过java发送Internet邮件了!!!分享一下
- 关于Javamail的配置和简单应用
- 急求为什么??(c++二级的题,可是我却不会……)
- 用MIME协议生成一封复杂的邮件(三)
- javamail API创建邮件
- 数据库的设计及hibernate实体映射
- c#连接sqlsever2005的简单测试
- 学习c++的、关注游戏的注意了
- 软件开发七宗罪(转发)
- 链表的基础