邮件相关的标准
厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:
SMTP(Simple Mail Transfer Protocol) :即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
POP3(Post Office Protocol – Version 3) :即邮局协议版本 3 ,用于接收电子邮件的标准协议。
IMAP(Internet Mail Access Protocol) :即 Internet 邮件访问协议。是 POP3 的替代协议。
这三种协议都有对应 SSL 加密传输的协议,分别是 SMTPS , POP3S 和 IMAPS 。
MIME(Multipurpose Internet Mail Extensions) :即多用途因特网邮件扩展标准。它不是邮件传输协议。但对传输内容的消息、附件及其它的内容定义了格式。
1.开启SMTP服务
打开QQ邮箱里的 设置----->账户下面开启SMTP两个服务,开启后,QQ邮箱会生成一个授权码,在代码
里连接邮箱需使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。
2.通过Telnet测试端口25
1.启动cmd
2.输入telnet命令,如果提示该命令不存在,按如下操作:开始--->控制面板--->程序--->开启个关闭windows
功能--->telnet客户端,如果显示220 smtp.qq.com Esmtp QQ Mail Server,220表示连接成功。
3.下载依赖的jar包
解压完之后,通常我们只需要其中的mail.jar,把它加到我们java工程的依赖包中。
代码
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class JavaMailTest{
public static void main(String[] args) throws MessagingExceptin,,GeneralSecurityException{
Properties properties = new Properties();
//发送服务器需要身份验证
properties.setProperty("mail.smtp.auth","true");
//发送端口
properties.setProperty("mail.smtp.port","25");
//设置邮件服务器主机名
properties.setProperty("mail.smpt.host","smpt.qq.com");
//设置发送邮件协议名称
properties.setProperty("mail.transport.protocol","smtp");
/*
*这一段代码开启了SSL加密,要是没有跑成功,就加上这段代码。
*MailSSLSocketFactory sf = new MailSSLSocketFactory();
*sf.setTrustAllHosts(true);
*properties.put("mail.smtp.ssl.enable", "true");
*properties.put("mail.smtp.ssl.socketFactory", sf);
*/
//根据配置创建会话对象,用于和邮件服务器交互
Session session = Session.getInstance(properties);
//创建邮件对象
Message msg = new MimeMessage(session);
//设置邮件标题
msg.setSubject("javaMail测试");
//编写邮件内容
msg.setText("这是一封有javaMail发送的邮件");
msg.setForm(new InternetAddress("填写发送人的邮箱地址"));
Transport transport = session.getTransport();
transport.connect("smtp.qq.com","发送人的邮箱地址","你的邮箱密码或者授权码");
transport.sendMessage(msg,new Address[] { new InternetAddress("接收人的邮箱地址")});
transport.close();
}
}
4.更多参考文档:
http://docs.oracle.com/javaee/5/api/javax/mail/package-summary.html