Java发送QQ邮件

package com.utils;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

public class SendEmailUtil {

	// 邮件服务器主机名
	// QQ邮箱的 SMTP 服务器地址为: smtp.qq.com
	private static String myEmailSMTPHost = "smtp.qq.com";

	// 发件人邮箱
	private static String myEmailAccount = "XXXXX@qq.com";

	// 发件人邮箱密码(授权码)
	// 在开启SMTP服务时会获取到一个授权码,把授权码填在这里
	private static String myEmailPassword = "";

	/**
	 * 邮件单发(自由编辑短信,并发送,适用于私信)
	 *
	 * @param toEmailAddress
	 *            收件箱地址
	 * @param emailTitle
	 *            邮件主题
	 * @param emailContent
	 *            邮件内容
	 * @throws Exception
	 */
	public static void sendEmail(String toEmailAddress, String emailTitle, String emailContent) throws Exception {

		Properties props = new Properties();

		// 开启debug调试
		props.setProperty("mail.debug", "true");

		// 发送服务器需要身份验证
		props.setProperty("mail.smtp.auth", "true");

		// 端口号
		props.put("mail.smtp.port", 465);

		// 设置邮件服务器主机名
		props.setProperty("mail.smtp.host", myEmailSMTPHost);

		// 发送邮件协议名称
		props.setProperty("mail.transport.protocol", "smtp");

		/** SSL认证,注意腾讯邮箱是基于SSL加密的,所以需要开启才可以使用 **/
		MailSSLSocketFactory sf = new MailSSLSocketFactory();
		sf.setTrustAllHosts(true);

		// 设置是否使用ssl安全连接(一般都使用)
		props.put("mail.smtp.ssl.enable", "true");
		props.put("mail.smtp.ssl.socketFactory", sf);

		// 创建会话
		Session session = Session.getInstance(props);

		// 获取邮件对象
		// 发送的消息,基于观察者模式进行设计的
		Message msg = new MimeMessage(session);

		// 设置邮件标题
		msg.setSubject(emailTitle);

		// 设置邮件内容
		// 使用StringBuilder,因为StringBuilder加载速度会比String快,而且线程安全性也不错
		StringBuilder builder = new StringBuilder();

		// 写入内容
		builder.append(emailContent + "富儿子");

		// 写入我的官网
		builder.append("\n本人唯一官网:http://www.xiaofeia.top:5201");

		// 定义要输出日期字符串的格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

		// 在内容后加入邮件发送的时间
		builder.append("\n时间:" + sdf.format(new Date()));

		// 设置显示的发件时间
		msg.setSentDate(new Date());

		// 设置邮件内容
		msg.setText(builder.toString());

		// 设置发件人邮箱
		// InternetAddress 的三个参数分别为: 发件人邮箱, 显示的昵称(只用于显示, 没有特别的要求), 昵称的字符集编码
		msg.setFrom(new InternetAddress(myEmailAccount, "我是小费啊", "UTF-8"));

		// 得到邮差对象
		Transport transport = session.getTransport();

		// 连接自己的邮箱账户
		// 密码不是自己QQ邮箱的密码,而是在开启SMTP服务时所获取到的授权码
		// connect(host, user, password)
		transport.connect(myEmailSMTPHost, myEmailAccount, myEmailPassword);
		
		// 发送邮件
		transport.sendMessage(msg, new Address[] { new InternetAddress(toEmailAddress) });

		// 将该邮件保存到本地
		OutputStream out = new FileOutputStream("MyEmail.eml");
		msg.writeTo(out);
		out.flush();
		out.close();
		transport.close();
	}
}

pom.xml

		<!-- 邮箱 -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.5</version>
		</dependency>

调用:

public ...(){
	// 发送给谁, 邮件标题, 内容
	SendEmailUtil.sendEmail(userMail, "来自小费的邮箱验证码", "验证码: ");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值