邮件收发
电子邮件
要用Java代码发送QQ邮件,就必须开通POP3/SMTP服务,具体操作如下:
- 登陆QQ邮箱,点击-账户
- 开启POP3/SMTP服务
- 验证后,你会获得一个授权码,把它保存下来,这在后面会用到!
传输协议
- SMTP协议
发送邮件:
我们通常把处理用户SMTP请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。 - POP3协议
接收邮件:
我们通常把处理用户POP3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。
Java发送邮件
首先你应该准备JavaMail API和Java Activation Framework ,得到两个jar包:
mail.jar
activation.jar
将它们导入
我们可以先尝试发送一封简单的邮件(纯文本文件),这必须使电脑连接网络
编写测试代码:
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class Mail {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com"); 设置QQ邮件服务器
prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
// 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
//使用JavaMail发送邮件的5个步骤
//创建定义整个应用程序所需的环境信息的 Session 对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//发件人邮件用户名、授权码
return new PasswordAuthentication("这里写发件人的QQ邮箱", "这里写你的授权码");
}
});
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//2、通过session得到transport对象
Transport ts = session.getTransport();
//3、使用邮箱的用户名和授权码连上邮件服务器
ts.connect("smtp.qq.com", "这里写发件人的QQ邮箱", "这里写你的授权码");
//4、创建邮件
//创建邮件对象
MimeMessage message = new MimeMessage(session);
//指明邮件的发件人
message.setFrom(new InternetAddress("这里写发件人的QQ邮箱"));
//指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
message.setRecipient(Message.RecipientType.TO, new InternetAddress("这里写收件人的QQ邮箱"));
//邮件的标题
message.setSubject("这里写邮件的标题");
//邮件的文本内容
message.setContent(
"这里写你要发送的文本内容 ",
"text/html;charset=UTF-8");
//5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
}