Java发送邮件
概述
我们将用代码完成邮件的发送。这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进行任务提醒等等。
使用Java发送 E-mail 十分简单,但是首先你应该准备 JavaMail API 和Java Activation Framework 。
得到两个jar包:
mail.jar
activation.jar
maven
<dependency> <groupId>com.sun.mail</groupId> <artifactId>all</artifactId> <version>1.4.7</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>
JavaMail 是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面所讲的SMTP,POP3,IMAP,还有MIME等。我们在使用JavaMail API 编写邮件时,无须考虑邮件的底层实现细节,只要调用JavaMail 开发包中相应的API类就可以了。
我们可以先尝试发送一封简单的邮件,首先请确保电脑可以连接网络。
创建包含邮件服务器的网络连接信息的Session对象。
创建代表邮件内容的Message对象
创建Transport对象,连接服务器,发送Message,关闭连接
主要有四个核心类,我们在编写程序时,记住这四个核心类,就很容易编写出Java邮件处理程序,如图所示:
纯文本邮件
第一步:先在项目中导入jar包
导入的就是在概述中提到的activation,jar和mail.jar包,或引入maven依赖
第二步:QQ邮箱中获取对应的权限
QQ邮箱需要安全验证,我们需要获取他对应的权限;
进入QQ邮箱–>邮箱设置–>账户,下滑找到POP3/IMAP/SMTP/Exchange/CardDav/CalDav服务,开启POP3/SMTP服务,如图所示:
记住这16位授权码,然后开始编写测试程序:
import com.sun.mail.util.MailSSLSocketFactory;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
/**
* program: guarantee
* Author:马慧彪
* Description:
* Date:Create in 2020-01-18 14:56
* Modified By:
* Reason:
*/
public class SendEmail {
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", "tru