先通过手工方式来发送和接收一封邮件,在sina和sohu上分别开设了一个邮箱账号,想用sina的邮箱向sohu的邮箱中发送一封邮件,我们要发送和接收邮件,首先要知道sina和sohu的邮件服务器地址,邮件服务器帮我们干什么?把我们把邮件发出去,帮我们把邮件接收进来,为我们提供取邮件的服务。然后提问我们是直接把邮件发给sohu的邮件服务器,还是经过sina的服务器发给sohu?我们分别要连接它们的什么服务器呢?
并且要提前准备好Base64编码的用户名和密码。
1,首先邮箱的用户名和密码必须是base64的,代码如下:
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import sun.misc.BASE64Encoder; public class Base64Util { /* * * */ /** * @param args add by zxx ,Dec 30, 2008 * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BASE64Encoder encoder = new BASE64Encoder(); System.out.println("please input 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())); } }
2,telnet smtp.sina.com 25(这是新浪邮箱的收发服务器,端口号是25)
先用新浪的邮箱发一封邮件
-->ehlo 原始用户名1
-->auth login
-->base64过后的用户名1
-->base64过后的密码1
认证成功后,可以发邮件了
--》mail from:<原始用户名1@sina.com>
enter过后
-->rcpt to:<用户名2@sohu.com>
enter后就是邮件内容
-->data
enter
-->from:<lili@sohu.com>(故意换掉搜狐发邮件人的地址,这里是用新浪的邮箱向搜狐的邮箱发邮件,from应该是..@sina.com,这里故意作为替换)
subject:haha
(一定要空一行)
test!!
.(一定要输入一个点,表示内容结束了)
-->quit
3,用pop3去取邮件
-->telnet pop3.sohu.com 110(去搜狐的邮箱去取邮件)
-->user 原始用户名2
-->pass 原设密码2
-->stat(查看所有的邮件)
-->list
-->list 邮件编号
-->dele 邮件编号(这不是真正的删除,只是删除了一个记号)
-->rset 邮件编号(上面所谓的删除就回复了)
大家可能会有一个疑问,我是怎么知道sina和sohu的smtp和pop3服务器地址的呢?
只要你在网站上申请一个邮箱后,它自己会告诉你smtp和pop3服务器的地址
pop.sina.com pop3.sina.com 都是一样的