JavaMail用QQ邮箱发送邮件

本文介绍使用JavaMail发送QQ邮箱遇到的问题及解决方案,重点在于如何正确配置SSL连接及属性参数,确保邮件发送过程的安全性和稳定性。

由于在最近的学习上要用到发送邮件的功能,所以学习了JavaMail,但是在使用QQ邮箱的时候发现了一个问题,使用服务器smtp.qq.com端口号为的时候会发生A secure connection is requiered(such as ssl)的异常,说这个不安全,后来去网上查了以后发现25端口是非SSL协议端口号,但是改成465端口号的时候就运行不出来587端口号的时候就出现Could not connect to SMTP host的异常,在网上查了一系列资料,都说把服务器改成smtp.exmail.qq.com就可以了,但是我实验了还是不行,改了之后又会报Invalid domain name的异常,当时就很纳闷到底是怎么一回事~

后来经过查找发现只要在Properties下面调用put方法加上这两个参数就好了properties.put("mail.smtp.ssl.enable", "true");

下面是我用的JavaMali的版本以及jar包和源代码

版本:javamail1_4_7(mailapi.jar,smtp.jar)

下载地址:http://pan.baidu.com/s/1hqiOEMS

import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;


public class Mail {


	public static void sendMail() {
		try {
			Properties props = new Properties();
			//普通客户端
			props.setProperty("mail.smtp.auth", "true");
			//选择协议
			props.setProperty("mail.transport.protocol", "smtp");
			MailSSLSocketFactory sf = new MailSSLSocketFactory();
			sf.setTrustAllHosts(true);
			props.put("mail.smtp.ssl.enable", "true");
			props.put("mail.smtp.ssl.socketFactory", sf);
			//
			Session session = Session.getDefaultInstance(props);
			// 设置debug模式 在控制台看到交互信息
			session.setDebug(true);
			// 建立一个要发送的信息(邮件的标题,内容等)
			Message msg = new MimeMessage(session); 
			// 设置简单的发送内容
			msg.setText("hello");
			msg.setFrom(new InternetAddress("qing.suibian@foxmail.com"));// 发件人邮箱号
			//邮件标题			
			msg.setSubject("test");
			// 发送信息的工具
			Transport transport = session.getTransport();
			// 发件人邮箱号// 和密码
			transport.connect("smtp.qq.com", 465, "fajianren@qq.com",
					"password");
			transport.sendMessage(msg, new Address[] { new InternetAddress(
					"shoujianren@qq.com") });// 对方的地址
			transport.close();


		} catch (MessagingException e) {
			e.printStackTrace();
		} catch (GeneralSecurityException e) {
			e.printStackTrace();
		}
	}
}


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值