利用javaMail发送邮件

经过网上查找资料,从前辈们提供的资料中进行不断的总结改进,本人完成了以下程序。以下的程序只能发送一些简单的文字到邮箱,并没有实践过发送附件,图片,文件等复杂情况。

一、几个重要的对象

1)Session
2)Message
3)Transport
二、第三方程序用 qq账号发送邮件
1,什么是客户端?
在腾讯看来,所有不是通过腾讯页面或客户端登陆的都属于客户端
在上面所谓的客户端登陆qq时,原来的账号密码已经不管用了,需要进入腾讯进行设置,获取授权码,用 授权码进行登陆。
2,怎么获取授权码?
进入qq邮箱——>设置——>账户——> 开启POP3/SMTP服务——>短信验证——>获取授权码

3,怎样在程序中利用qq邮箱,向其他的邮箱发送邮件?
1)在程序中导入需要的jar包(2个):


2)写程序
public class MailSender {
	public static void sendMail(Mail mail) throws Exception {
		Properties props = new Properties(); // 可以加载一个配置文件
		// 使用smtp:简单邮件传输协议
		props.setProperty("mail.transport.protocol", "smtp");//发送邮件协议
		props.setProperty("mail.smtp.auth", "true");//需要验证
		
		// 设置邮箱服务器的端口号
		Integer port=mail.getPort();
		props.setProperty("mail.smtp.port",port.toString());
		if ("smtp.qq.com".equals(mail.getStmpType())) {
			// qq邮箱需要的的SSL设置
			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			props.setProperty("mail.smtp.port", port.toString());
			props.setProperty("mail.smtp.socketFactory.port", port.toString());
		}
		

		// 1,根据属性新建一个邮件会话
		Session session = Session.getInstance(props);
		session.setDebug(true); //有他会打印一些调试信息。

		// 2,由邮件会话新建一个消息对象
		MimeMessage message = new MimeMessage(session);
		// 3,设置发件人的地址
		message.setFrom(new InternetAddress(mail.getFromMail()));
		// 4,设置收件人,并设置其接收类型为TO
		message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail.getToMail()));
		
		// 5,设置邮件的内容
		// 设置主题
		message.setSubject(mail.getSubject());
		// 设置信件内容
		// message.setText(mailContent); //发送 纯文本 邮件 todo
		message.setContent(mail.getContent(), "text/html;charset=utf-8"); // 发送HTML邮件,内容样式比较丰富
		// 设置发信时间
		message.setSentDate(new Date());
		
		// 6,存储邮件信息
		message.saveChanges();

		// 7,发送邮件
		Transport transport = session.getTransport();
//		形如:transport.connect("smtp.qq.com", 465, mail.getUsername(), mail.getPassword());//连接到QQ邮箱服务器
		transport.connect(mail.getStmpType(), mail.getPort(), mail.getUsername(), mail.getPassword());//连接到邮箱服务器
//		transport.connect(user, password);
		transport.sendMessage(message, message.getAllRecipients());// 发送邮件,其中第二个参数是所有已设好的收件人地址
		transport.close();
	}
}



4,程序中需要注意的地方?
1)Mail实体类中含有的字段简介
fromMail:发信人邮箱号
user: 现在要求fromMail和user要保持一致
password:为从腾讯获得的授权码
toMail:收件人的邮箱
mailTiele:邮件主题
mailContent:邮件内容
smtpType:邮件发送协议
port:邮箱服务器端口
2)qq邮箱需要使用SSL,端口号为465或587;
   
   
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.port", "465");
3)建立连接connect时要指出使用的协议
   
   
transport.connect("smtp.qq.com", 465, user, password);//连接到QQ邮箱服务器

三、第三方程序利用常用邮箱发送邮件总结
1,客户端登陆邮箱时,例如登陆qq邮箱,网易邮箱等,登陆时用的密码都不是原来的密码,而是利用官方 生成的授权码进行登陆
2,不同的邮箱使用的邮件发送协议不同:
qq:stmp.qq.com;端口号:465或587;需要使用SSL;qq邮箱授权码: ***
163:stmp.163.com;端口号:25;不需要使用SSL;163邮箱授权码:**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值