使用Java发送QQ邮件 有更新!

  |   1 评论   |   729 浏览

QQ邮箱设置

首先,我们需要打开QQ邮箱的SMTP服务,因为QQ邮箱对于一般的用户都是默认关闭SMTP服务的。
打开QQ邮箱,点击设置,点击帐户,找到SMTP服务的选项,可以看到此处默认是关闭的,点击开启。
然后腾讯会进行一些身份验证,身份验证通过以后,腾讯会给出一个用于使用SMTP的16位口令,此处这个口令一定牢记,因为后面要使用SMTP功能必须要用到这个口令,没有这个口令即使知道QQ邮箱密码也没有用。
此处未给出口令的截图,毕竟为了隐私保密,不然大家都可以登录使用我的QQ邮箱SMTP服务了。后面我们将该口令记为SMTP口令。

java代码片段

首先引入email所需的相关maven依赖

	<dependency>
	  <groupId>javax.mail</groupId>
	  <artifactId>mail</artifactId>
	  <version>1.4.7</version>
	</dependency>  

非maven工程请直接下载jar包:前往下载javax.mail依赖包

然后详见代码片段:

/**
 * 测试邮件发送 
 * @author Washmore
 * @version V1.0
 * @since 2017/04/26
 */  
public final class EmailTestCase {

	@Test
	public void sendEmail() throws Exception {
			  // 创建Properties 类用于记录邮箱的一些属性
		final Properties props = new Properties();
			  // 表示SMTP发送邮件,必须进行身份验证
		props.put("mail.smtp.auth", "true");
			  //此处填写SMTP服务器
		props.put("mail.smtp.host", "smtp.qq.com");
			  //端口号
		props.put("mail.smtp.port", "587");
			  // 此处填写你的账号
		props.put("mail.user", "xxxx@qq.com");
			  // 此处的密码就是前面说的16位STMP口令
		props.put("mail.password", "xxxxxxxxxxxxxxxx");

			  // 构建授权信息,用于进行SMTP进行身份验证
		Authenticator authenticator = new Authenticator() {
				  protected PasswordAuthentication getPasswordAuthentication() {
					  // 用户名、密码
		String userName = props.getProperty("mail.user");
					  String password = props.getProperty("mail.password");
					  return new PasswordAuthentication(userName, password);
				  }
			  };
			  // 使用环境属性和授权信息,创建邮件会话
		Session mailSession = Session.getInstance(props, authenticator);
			  // 创建邮件消息
		MimeMessage message = new MimeMessage(mailSession);
			  // 设置发件人
		InternetAddress formAddress = new InternetAddress(props.getProperty("mail.user"));
			  message.setFrom(formAddress);

			  // 设置收件人的邮箱
		InternetAddress toAddress = new InternetAddress("xxxxxxxx@qq.com");
			  //RecipientType三个枚举值分别为TO收件人,CC抄送,,BCC密送
	   /**
	   如果A 发送邮件给B、C,抄送给D、E,密送给F、G,那么: B、C、D、E、F、G都能收到这封邮件。   
	   B知道这是A发送给他和C的邮件,并且抄送给了D、E,但不知道密送给了F、G。   
	   D知道这是A发送给B、C的邮件,并且抄送给了他和E,但也不知道密送给了F、G。   
	   F知道这是A发送给B、C的邮件,并且抄送给了D、E,密送给了他,但不知道同时还密送给了G。 
	   */  

		message.setRecipient(Message.RecipientType.TO, toAddress);

			  // 设置邮件标题
		message.setSubject("测试邮件");

			  // 设置邮件的内容和mimeType
		message.setContent("这是一封测试邮件", "text/html;charset=UTF-8");

			  // 最后发送邮件
		Transport.send(message);
	}
}

tips: 注意此教程不仅限于qq邮箱,其他邮箱雷同,请自行尝试

评论

发表评论