Java常见应用(四):使用Javax.mail发送QQ简单邮件

使用Javax.mail发送简单邮件到QQ邮箱的流程:

1、 Properties对象封装会话所需的信息
2、根据Properties对象封装的信息创建Session对象

Session session = Session.getInstance(Properties properties);

3、 根据session对象创建邮件MimeMessage

MimeMessage message = createMimeMessage(Session session ,……);

4、 根据session对象与smtp服务器创建连接

Transport transport = session.getTransport();
transport.connect(“发件人邮箱”,“发件人邮箱授权码”);

5、 发送邮件

transport.sendMail(message,message.getAllRecepient);

6、 关闭连接

tranpsort.close()

在这里插入图片描述
在这里插入图片描述

【遇到问题】:
在这里插入图片描述【原因】:
缺少activation.jar

Properties属性:

属性名属性类型说明
mail.stmp.hostStringSMTP服务器地址,如smtp.sina.com.cn
mail.stmp.portintSMTP服务器端口号,默认为25
mail.stmp.authbooleanSMTP服务器是否需要用户认证,默认为false
mail.stmp.userStringSMTP默认的登陆用户名
mail.stmp.fromString默认的邮件发送源地址
mail.stmp.socketFactory.classStringsocket工厂类类名,通过设置该属性可以覆盖提供者默认的实现,必须实现javax.net.SocketFactory接口
mail.stmp.socketFactory.portint指定socket工厂类所用的端口号,如果没有规定,则使用默认的端口号
mail.smtp.socketFactory.fallbackboolean设置为true时,当使用指定的socket类创建socket失败后,将使用java.net.Socket创建socket,默认为true

package Samples;

import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Demo01 {


	public static void sendEmail() throws Exception {
		
		//1、 Properties对象封装会话所需的信息
		Properties props = new Properties();
		props.setProperty("mail.transport.protocol", "smtp");//使用协议 smtp
		props.setProperty("mail.smtp.host", "smtp.qq.com");// qq的smtp服务器地址
		props.setProperty("mail.smtp.port", "465");	//协议端口号
		props.setProperty("mail.smtp.auth", "true");// 需要授权
		
		//是否需要SSL安全认证 qq是要求需要的
		props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		props.setProperty("mail.smtp.socketFactory.fallback", "false");	//	没有经过SSL认证的邮件不接收
		props.setProperty("mail.smtp.socketFactory.port", "465");  //SSL 认证端口与smtp一样就可以了
		
		
		//2、根据Properties对象封装的信息创建Session对象
		Session  session = Session.getInstance(props);
		
		//3、 根据session创建邮件MimeMessage
		MimeMessage message = creatMimeMessage(session,"发件人邮箱地址","收件人邮箱地址","UTF-8");
		
		//4、通过session建立与stmp服务器的连接
		Transport transport = session.getTransport();
		
		//connect(String host,String user,String password) host:发件人邮箱地址; user:用户名;  password:邮箱授权码
		transport.connect("发件人邮箱地址","发件人QQ邮箱授权码");
		
		//5、发送邮件
		transport.sendMessage(message, message.getAllRecipients());
		//6、关闭连接
		transport.close();
	}
	public static MimeMessage creatMimeMessage(Session session,String send, String recipient, String charset) throws Exception {
		//简单邮件:{发件人(from)、收件人(to)、标题(subject)、正文(content)、日期()date}   {图片、附件}
	
		MimeMessage message = new MimeMessage(session);
		//InternetAddress(String address,String personal, String charset)  其中address:邮件地址  ;personal:标识 ; charset:编码
		Address from = new InternetAddress(send,"我是发件人",charset);
		Address to = new InternetAddress(recipient,"我是收件人",charset);
		message.setFrom(from);
		
		//收件人类型:普通收件人(TO)、抄送(CC)、密送(BCC) 
		message.setRecipient(MimeMessage.RecipientType.TO,to);
		
		message.setSubject("这是主题",charset);		//	邮件主题
		message.setContent("这是正文……","text/html;charset=utf-8");	//正文内容
		message.setSentDate(new Date());		//发件日期
		
		return message;
		
	}


	
	public static void main(String[] args) throws Exception {
		sendEmail();
		
	}
}

注意:
1、 邮件是网页显示的,content的编码格式为"text/html;charset=utf-8",因此:message.setContent(“这是正文……”,“text/html;charset=utf-8”);

2 、javax.mail包的Address类为抽象类,所以使用其子类InternetAddress:

在这里插入图片描述
3、addRecipient(Message.RecipientType, Address)
Message.RecipientType表示/收件人类型,为枚举类型。有以下三种
:普通收件人(MimeMessage.RecipientType…TO)、抄送(MimeMessage.RecipientType…CC)、密送(MimeMessage.RecipientType…BCC)

Javax.mail邮件更多学习可参考:
java mail学习笔记4——Message类详解

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值