发送QQ邮件(Java)

1 开启SMTP服务

登录QQ邮箱,点击设置,切换到账户界面

开启SMTP服务,点击开启

使用密保手机输入"配置邮件客户端"至1069070069手机号,然后点击我已发送按钮,确认后,返回一串16位的代码,要记住,之后会用,这里笔者将授权码遮住了,都懂得╮( ̄▽ ̄)╭

注意:如果更换或QQ密码或者独立密码的,这个授权码会失效,需要重新获取验证码,具体可以查看->https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28

然后就可以编写java代码了,需要的jar包为mail.jar,JavaEE自带的,以防万一,我也上传了一份,有需要的可以自己下

http://download.csdn.net/download/weixin_38187317/10252021

 

2 编写代码java

首先给出项目结构:

配置文件qqEamil.properties:

#表示SMTP发送邮件,必须进行身份验证
mail.smtp.auth=true

#此处填写SMTP服务器
mail.smtp.host=smtp.qq.com

#端口号
mail.smtp.port=587

#此处填写你的账号
mail.user=xxxxxxxx@qq.com

#此处的密码就是前面说的16位STMP口令
mail.password=xxxxxxxxxxxxxxxx

#发送邮件协议名称
mail.transport.protocol=smtp


编写测试类1

 

package test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class TestEmail {
	private static String content = "<!DOCTYPE html>"
			+ "<html>"
			+ "<head>"
			+ "<title>测试邮件</title>"
			+ "<meta name=\"content-type\" content=\"text/html; charset=UTF-8\">"
			+ "</head>"
			+ "<body>"
			+ "这是一封测试邮件~"
			+ "</body>"
			+ "</html>"; // 可以用HTMl语言写

	public static void main(String[] args) {
		System.out.println("测试发送邮件");
		// 创建Properties 类用于记录邮箱的一些属性
		Properties props = new Properties();

		InputStream inputStream = TestEmail.class.getClassLoader().getResourceAsStream("qqEamil.properties");
		try {
			props.load(inputStream);	//加载properties文件
			inputStream.close();

			// 构建授权信息,用于进行SMTP进行身份验证
			Authenticator authenticator = new Authenticator() {

				protected PasswordAuthentication getPasswordAuthentication() {
					// 用户名、密码
					String userName = props.getProperty("mail.user");
					String password = props.getProperty("mail.password");
					return new PasswordAuthentication(userName, password);
				}
			};
			// 使用环境属性和授权信息,创建邮件会话
			Session mailSession = Session.getInstance(props, authenticator);
			// 创建邮件消息
			MimeMessage message = new MimeMessage(mailSession);
			// 设置发件人

			InternetAddress from = new InternetAddress(props.getProperty("mail.user"));
			message.setFrom(from);

			// 设置收件人的邮箱
			InternetAddress to = new InternetAddress("xxxxxxxxx@qq.com");
			message.setRecipient(RecipientType.TO, to);

			// 设置邮件标题
			message.setSubject("测试邮件");

			// 设置邮件的内容体
			message.setContent(content, "text/html;charset=UTF-8");

			// 发送邮件
			Transport.send(message);
		} catch (MessagingException e) {
			// 邮件异常
			e.printStackTrace();
		} catch (IOException e) {
			// properties文件加载异常
			e.printStackTrace();
		}

	}
}

编写测试类2

测试类1的Transport不由我们控制,程序运行自行销毁,但程序长了就不好了,我们需要能自己控制开闭的Transport

package test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class TestEmail2 {
	private static String content = "<!DOCTYPE html>"
			+ "<html>"
			+ "<head>"
			+ "<title>测试邮件2</title>"
			+ "<meta name=\"content-type\" content=\"text/html; charset=UTF-8\">"
			+ "</head>"
			+ "<body>"
			+ "这是一封测试邮件~"
			+ "</body>"
			+ "</html>"; // 可以用HTMl语言写

	public static void main(String[] args) {
		System.out.println("测试发送邮件2");
		// 创建Properties 类用于记录邮箱的一些属性
		Properties props = new Properties();

		InputStream inputStream = TestEmail.class.getClassLoader().getResourceAsStream("qqEamil.properties");
		try {
			props.load(inputStream);	//加载properties文件
			inputStream.close();

			// 使用环境属性和授权信息,创建邮件会话
			Session session = Session.getInstance(props);
			// 通过session得到transport对象
			Transport ts = session.getTransport();
			// 连接邮件服务器:邮箱类型,帐号,授权码
			ts.connect("smtp.qq.com",props.getProperty("mail.user"), props.getProperty("mail.password"));
			// 创建邮件消息
			MimeMessage message = new MimeMessage(session);
			// 设置发件人

			InternetAddress from = new InternetAddress(props.getProperty("mail.user"));
			message.setFrom(from);

			// 设置收件人的邮箱
			InternetAddress to = new InternetAddress("xxxxxxxx@qq.com");
			message.setRecipient(RecipientType.TO, to);

			// 设置邮件标题
			message.setSubject("测试邮件");

			// 设置邮件的内容体
			message.setContent(content, "text/html;charset=UTF-8");

			// 发送邮件
			ts.sendMessage(message, message.getAllRecipients());
			ts.close();
		} catch (MessagingException e) {
			// 邮件异常
			e.printStackTrace();
		} catch (IOException e) {
			// properties文件加载异常
			e.printStackTrace();
		}

	}
}

最终结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值