JavaMail发送QQ邮件

本文档介绍了如何使用JavaMail API发送QQ邮件,包括开启QQ邮箱服务获取授权码,设置IMAP、POP3/SMTP及SSL加密方式,并提供了详细的JavaMail发送邮件的代码示例。

JavaMail发送QQ邮件

1、开启QQ服务并获得授权码

授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码
适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

QQ邮箱Web界面上方——设置——账户——找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务——开启所需要的服务

QQ官方文档:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

2、关于设置IMAP、POP3/SMTP及其SSL加密方式

如果您的电子邮件客户端支持SSL,可以在设置中选择使用SSL。
通用配置参数:
(我们已经默认都支持这些协议,用户无需自己手动开启这些服务器与端口)
 
POP3/SMTP协议
接收邮件服务器:pop.exmail.qq.com ,使用SSL,端口号995
发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465
海外用户可使用以下服务器
接收邮件服务器:hwpop.exmail.qq.com ,使用SSL,端口号995
发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465
 
IMAP协议
接收邮件服务器:imap.exmail.qq.com  ,使用SSL,端口号993
发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465
海外用户可使用以下服务器
接收邮件服务器:hwimap.exmail.qq.com ,使用SSL,端口号993
发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465
QQ官方文档:http://service.exmail.qq.com/cgi-bin/help?id=28&no=1000585&subtype=1

3、JavaMail代码


import java.security.Security;
import java.util.Properties;

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

import org.junit.Test;

public class JavaMail01_Test {

	@Test
	public void testJavaMail()throws Exception{
		
		Properties props = new Properties();
//              Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
		final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
		
		props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
		props.setProperty("mail.smtp.socketFactory.fallback", "false");
		props.setProperty("mail.smtp.socketFactory.port", "465");
		props.put("mail.smtp.ssl.enable", "true");  
		props.put("mail.smtp.port", "465");
		props.put("mail.smtp.host","smtp.qq.com");//邮件发送服务器地址
		props.put("mail.smtp.auth",true);//是否验证用户身份
		
		Session session = Session.getInstance(props);//得到Session
//		不适用下面的方式创建session也可以
//		Session session = Session.getDefaultInstance(props, new Authenticator(){
//			//身份认证  
//			protected PasswordAuthentication getPasswordAuthentication() {
//		          return new PasswordAuthentication("115****435@qq.com","16位授权码");
//		      }});
		session.setDebug(true);//使用debug模式,在控制台输出smtp协议应答过程
		
		//创建一个MimeMessage格式的邮件
		MimeMessage message = new MimeMessage(session);
		//设置发送者
		Address fromAddress = new InternetAddress("115****435@qq.com");//邮件地址
		message.setFrom(fromAddress);//设置发件地址
		//设置接收者
		Address toAddress = new InternetAddress("ygsama@qq.com");//邮件地址
		message.setRecipient(RecipientType.TO, toAddress);//设置收件地址
		
		//设置邮件主题
		message.setSubject("这是主题");
		//设置邮件内容
		message.setText("这是内容");
		
		//保存邮件
		message.saveChanges();
		
		// 得到发送邮件的通道
		Transport transport = session.getTransport("smtp");
		
		// 通道连接服务器jlqwfmgughplhbgf
		transport.connect("smtp.qq.com","115****435@qq.com","16位授权码");
		
		// 发送
		transport.sendMessage(message, message.getAllRecipients());
		
		// 关闭通道
		transport.close();
	}
}

注意:如果是个人邮箱使用smtp.qq.com、企业邮箱使用smtp.exmail.qq.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值