QQ邮箱发送邮件代码及分析

等待工作中闲来无事 想起来做一个简单的邮件发送 :首先 QQ 邮箱 和搜狐 和163 都不一样 QQ发送邮箱要SSL加密 也就是说 你的密码登陆是会报错的 你要在QQ设置里面获取你的邮箱:具体操作 可以从QQ官方介绍里面操作 附上地址:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256 获取授权码后 把你的密码更换成QQ给你的授权码 (其实这也就是QQ的一种服务器密码加密方式)

代码:

package com.tgb.service;
  
 import java.util.Properties;
  import javax.mail.Message;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


 


 @Service
 @Transactional
 public class Sendmail  {

    邮件的发送地址
private String from = "*********@qq.com";
     //邮箱的用户名
 private String username = "自己的用户名";
     //邮箱的密码
 private String password = "授权码";
     //发送邮件的服务器地址  (这里有另一种 smtp.exmail.qq.com  据说可以不用ssl 方式 楼主没有试验出来)
 private String host = "smtp.qq.com";
     

   
   
  
 public void test() {
try{
         Properties prop = new Properties();

    /*

     host =smtp.qq.com  上面已经定义

     mail.transport.protocol  是发送邮件的协议名称

*/  


         prop.setProperty("mail.host", host);
         prop.setProperty("mail.transport.protocol", "smtp");
         prop.setProperty("mail.smtp.auth", "true");
         prop.setProperty("mail.smtp.port", "587");

/**

这里的session 不是我们理解的会话  他是引用的import javax.mail.Session; mail里面的一个类 用于读取配置信息 

Session.getInstance 根据相关属性创建一个新的Session实例

注意:要观察传到邮件服务器上的邮件命令,请用 session.setDebug(true) 设置调试标志 所以setDebug 是设置调试标志的

*/
         Session session = Session.getInstance(prop);
         session.setDebug(true);

/**

我们理解 Transport 是传输的意思 所以getTransport() session 创建传输协议的方法

*/
         Transport ts = session.getTransport();

//这一步相当于登陆你的邮箱
         ts.connect(host, username, password);

//调用下面的方法

/**

Message对象将存储我们实际发送的电子邮件信息,Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。

*/
         Message message = createEmail(session,"收信人的邮箱地址例如:[email protected] 也可以写成一个变量 例如 注册时 你的user.getEmail() 当然写成变量时 你在调       用这个方法的时候 可以直接把注册信息传过来 例如:test(User user)");


         ts.sendMessage(message, message.getAllRecipients());
        ts.close();
     }catch (Exception e) {
         throw new RuntimeException(e);
     }

}

public Message createEmail(Session session,String email) throws Exception{
      
      MimeMessage message = new MimeMessage(session);
      message.setFrom(new InternetAddress(from));
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
      message.setSubject("用户注册邮件");
      
      String info = "恭喜您注册成功,您的用户名:" +  ",您的密码:"  + ",请妥善保管,如有问题请联系网站客服!!";
      message.setContent(info, "text/html;charset=UTF-8");
      message.saveChanges();
      return message;
 }
 }

我是在注册的时候调用的发送邮件

@Autowired
private Sendmail send;

调用方法  send.test();

附上所需要的两个jar包 直接放在web-inf /lib下面就行

猜你喜欢

转载自blog.csdn.net/fuyonghui123/article/details/52416386