首先maven:

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

用户名密码验证:

 public class MailAuthenticator extends Authenticator{

     //邮箱账号
     private String username;

     //邮箱密码
     private String password;

     public MailAuthenticator(String username,String password){
         this.username=username;
         this.password=password;
     }

     @Override
     protected PasswordAuthentication getPasswordAuthentication() {
         return new PasswordAuthentication(username, password);
     }

     public String getUsername() {
         return username;
     }
     public void setUsername(String username) {
         this.username = username;
     }
     public String getPassword() {
         return password;
     }
     public void setPassword(String password) {
         this.password = password;
     }
 }
 public class SimpleMailSender {
     private final transient Properties props = System.getProperties();
     private transient MailAuthenticator authenticator;
     private transient Session session;

     public SimpleMailSender(final String smtpHostName, final String username,
             final String password){
         try {
             init(username, password, smtpHostName);
         } catch (NoSuchProviderException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
     }
     public SimpleMailSender(final String username, final String password) throws NoSuchProviderException {
         //通过邮箱地址解析出smtp服务器,对大多数邮箱都管用
         final String smtpHostName = "smtp." + username.split("@")[1];
         init(username, password, smtpHostName);

         }
     private void init(String username, String password, String smtpHostName) throws NoSuchProviderException {
         // 初始化props
         props.put("mail.transport.protocol", "smtp");
         props.put("mail.smtp.auth", "true");
         //qq是smtp.qq.com
         props.put("mail.smtp.host", smtpHostName);
         //ssl邮箱端口
         props.put("mail.smtp.socketFactory.port", 465);//465
         //开启ssl
         props.put("mail.smtp.starttls.enable","true");
         // 验证
         authenticator = new MailAuthenticator(username, password);
         // 创建session
         session = Session.getInstance(props, authenticator);
         session.setDebug(true);
 //        Transport transport = session.getTransport();
 //        try {
 //            transport.connect("smtp.qq.com", 25, "530486639@qq.com", "llg9004_d");
 //        } catch (MessagingException e) {
 //            // TODO Auto-generated catch block
 //            e.printStackTrace();
 //        }
     }
     public void send(String recipient, String subject, Object content)
             throws AddressException, MessagingException {
         // 创建mime类型邮件
         final MimeMessage message = new MimeMessage(session);
         // 设置发信人
         message.setFrom(new InternetAddress(authenticator.getUsername()));
         // 设置收件人
         message.setRecipient(RecipientType.TO, new InternetAddress(recipient));
         // 设置主题
         message.setSubject(subject);
         // 设置邮件内容
         System.out.println();
         message.setContent(content.toString(), "text/html;charset=utf-8");
         // 发送
         Transport.send(message);
         }
 //    public void send(String recipient, SimpleMail mail)
 //            throws AddressException, MessagingException {
 //        send(recipient, mail.getSubject(), mail.getContent());
 //        }

     /**
      * 1.重点现在客户端掉http端口25,腾讯好像不让掉了,必须https调用
      * 2.腾讯使用这种方式连接的话,需要重新申请独立密码,不是qq邮箱的密码,还需开启pop/smtp功能
      * 3.用腾讯的邮局发邮件好像有限制,发送过多,好像直接给你连接断开了
      * 4.如果需要做发邮件的功能的话,最好自己搭建邮局
      * @param args
      * @throws AddressException
      * @throws MessagingException
      */
     public static void main(String[] args) throws AddressException, MessagingException {
         SimpleMailSender sms= new SimpleMailSender("10000@qq.com",
                 "dfvasdasdasd");
         //发送过多的话会断开连接
 //        for(int i=0;i<100;i++){
             sms.send("11111@qq.com", "hello", "hello");
 //            System.out.println("#######:"+i);
 //        }
     }
 }

javamail 利用qq邮箱做邮箱服务器,简单小demo的更多相关文章

  1. hammer.js方法总结(只做了一个简单的demo)

    html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  2. koa2 mongdb 做后端接口的小demo

    现在前端全栈里面有一种技术栈比较火 前端使用 vue 或者react 后端使用 koa2 mysql数据库 或者mongdb做数据储存 但是基本这样的全栈教程 都要收费 收费就收费吧 但是 有没有遇到 ...

  3. Spring Boot 简单小Demo 转载!!!

    Spring Boot简介 接下来我们所有的Spring代码实例将会基于Spring Boot,因此我们先来了解一下Spring Boot这个大杀器. Spring早期使用XML配置的方式来配置Spr ...

  4. PyQt4简单小demo

    #coding=utf-8 import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class FontPropertiesDl ...

  5. leaflet简单操作demo

    今天大意了解了一下leaflet这个开源的 JavaScript 库,很强大. 结合腾讯地图,做了个简单的demo,作为一个学习的起点吧(各种API结合自身的业务) <!DOCTYPE html ...

  6. 利用Javamail接收QQ邮箱和Gmail邮箱(转)

    求大神解答 Java代码: public class SendMailController { //@Autowired private JavaMailSenderImpl mailSender; ...

  7. Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱

    在进入正题这前先看下网易(163)邮箱的服务器地址和端口号 类型 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 收件服务器 POP pop.163.com 995 110 收件服务器 ...

  8. java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例

    研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...

  9. 常用邮箱POP3 STMP服务器与端口号设置

    一.常用邮箱POP3 STMP服务器与端口号设置: [网易 163.126免费邮箱目前不直接开放smtp.pop3服务.有需要的用户可通过购买随身邮或邮箱伴侣及加入会员中心获得.从2006年11月16 ...

随机推荐

  1. Web Service 的创建简单编码、发布和部署

    最近,老大准备将已有的C/S架构项目中的通信部分做成通用,需要将其支持WebService为以后项目向着B/S架构升级做好铺垫,为此身为屌丝的我去各种百度WebService是个什么卵玩意,然后逐渐搭 ...

  2. XCODE 出现 The operation couldn&#39;t be completed.(LaunchServicesError error 0.)错误修复

    XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复   XCODE 出现 The opera ...

  3. emmet学习笔记

    Emment语法使用:按table键的结果1.初始化:(HTML文档需要包含一些固定的标签,比如<html>.<head>.<body>等). html:或! :用 ...

  4. TestNG详解-深度好文

    转自: https://blog.csdn.net/lykangjia/article/details/56485295 TestNG详解-深度好文 2017年02月22日 14:51:52 阅读数: ...

  5. python目录结构

    import sys,os #__file__取得当前文件名,pycharm会自动加上完整路径 #os.path.dirname取得上一级目录 #os.path.abspath取得绝对路径 BASE_ ...

  6. Android破解学习之路(十六)—— dll破解的IL指令

    IL指令介绍 IL是.NET框架中中间语言(Intermediate Language)的缩写. 使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不 ...

  7. js高级-模块化演变

    function demo(){ var a = b = c = 9; // b,c全局变量 a局部变量 } demo(); console.log(b) 命名空间 var Shop = {} //顶 ...

  8. kafka参数

    转载地址http://debugo.com/kafka-params/ ############################# System ########################### ...

  9. golang中的接口实现(一)

    golang中的接口实现 // 定义一个接口 type People interface { getAge() int // 定义抽象方法1 getName() string // 定义抽象方法2 } ...

  10. i++ i+=1 i=i+1 汇编代码效率比较

    结论:一样.编译器和编译器之间可能有点区别但是程序不会变. 0x00 一直不清楚到底是因为懒还是真的为了效率,要把" i = i + 1 "写成" i++ "或 ...