java 处理邮件发送
1.使用java mail api
2.使用SMTP协议直接发送,只要按照SMTP的协议要求规范直接编程即可
这里先说SMTP协议直接发送,原本想用java mail api 来写,没想到网上google一下就看到了有人直接用SMTP协议发送邮件,当然,前提是你需要对SMTP的协议清楚,好在已经有仁兄做了指导
参考原文:http://blog.csdn.net/Wasingmon/archive/2005/12/14/552448.aspx
这里主要是对源代码做更详细的解释
一下是原代码片段,自己已经做了一些详细的注释
public static void main(String[] args) throws UnknownHostException,
IOException {
//消息体
MailMessage message = new MailMessage();
message.setFrom("[email protected]");// 发件人
message.setTo("[email protected]");// 收件人
String server = "smtp.163.com";// 邮件服务器
message.setSubject("测试");// 邮件主题
message.setContent("自己用软件发送邮件哦");// 邮件内容
message.setDatafrom("谢飞");// 发件人,在邮件的发件人栏目中显示
message.setDatato("小李");// 收件人,在邮件的收件人栏目中显示
message.setUser("xxxxxx");// 登陆邮箱的用户名(填写自己的用户名)
message.setPassword("xxxxxx");// 登陆邮箱的密码(填写自己的密码)
//构造并连接服务器
SMTPClient smtp = new SMTPClient(server, 25);
//发送邮件成功标示
boolean flag;
flag = smtp.sendMail(message, server);
if (flag) {
System.out.println("邮件发送成功!");
} else {
System.out.println("邮件发送失败!");
}
}
说白了,其中没有贴出的主要函数
public void helo(String server, BufferedReader in, BufferedWriter out)
private int sendServer(String str, BufferedReader in, BufferedWriter out)
public int getResult(BufferedReader in)
public void authLogin(MailMessage message, BufferedReader in,
BufferedWriter out) throws IOException
public void mailfrom(String source, BufferedReader in, BufferedWriter out)
public void rcpt(String touchman, BufferedReader in, BufferedWriter out)
public void data(String from, String to, String subject, String content,
BufferedReader in, BufferedWriter out) throws IOException
public void quit(BufferedReader in, BufferedWriter out) throws IOException
public boolean sendMail(MailMessage message, String server)
这些都是完成SMTP协议的必要步骤,原作者是严格按照步骤一步一步的发送邮件,当然这里SMTP的规范,我们主要是利用socket通讯,完成这些步骤
smtp倒是一个比较简单的做法,当然,需要对SMTP的协议,即发送步骤,以及返回代码清楚
结果展示: