博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

04_邮箱发送邮件(主要面向qq邮箱)

Posted on 2017-11-06 22:52  叶灬黎  阅读(310)  评论(0)    收藏  举报

demo需求:

用java第三方调用邮箱(主要是qq邮箱)发送邮件给一方或多方

demo主要技术:

1.引入一个额外的jar包,javax.mail.jar,开启java操作邮箱的功能
2.Properties类的使用

demo主要代码展示:

/**
 * show 方法简介
 * 第三方调用邮箱(这里主要是qq邮箱)发送邮件给一方或多方,注意如果是qq邮箱必须开ssl加密
 * @author 叶灬黎
 * @param host 主机名,例:qq邮箱的host,"smtp.qq.com"
 * @param sender 发送人的邮箱 
 * @param nickname 发送人的昵称(随便取,别人收到邮件时看到的昵称)
 * @param password 密码,除qq邮箱是要去生成的随机码,暂时其他邮箱都是邮箱登录密码	 
 * @param receivers 接收人的邮箱,可以一个,可以多个,存放在一个字符串数组中传递
 * @param subject 邮件主题(标题)
 * @param content 邮件内容	 
 * @throws Exception
 */	
 public static void sendMail(String host, String sender, String nickname, String password, String[] receivers,
		String subject, String content) throws Exception {
	Properties props = new Properties();

	// 开启debug调试
	props.setProperty("mail.debug", "true");
	// 发送服务器需要身份验证
	props.setProperty("mail.smtp.auth", "true");
	// 设置邮件服务器主机名
	props.setProperty("mail.host", host);
	// 发送邮件协议名称
	props.setProperty("mail.transport.protocol", "smtp");
	
	// 开启ssl加密,目前qq是要开的
	MailSSLSocketFactory sf = new MailSSLSocketFactory();
	sf.setTrustAllHosts(true);
	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(subject);
	StringBuilder builder = new StringBuilder();
	builder.append(content);
	msg.setText(builder.toString());
	msg.setFrom(new InternetAddress(sender, nickname, "UTF-8"));

	//传输连接,并发送
	Transport transport = session.getTransport();
	transport.connect(host, sender, password);
	Address[] address = new Address[receivers.length];
	for (int i = 0; i < receivers.length; i++) {
		address[i] = new InternetAddress(receivers[i]);
	}
	transport.sendMessage(msg, address);
	transport.close();
}

demo资源位置:

 svn://106.15.229.200/Javaweb/tinyDemo_mail,用户 temp/temp