首先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. PyQt4简单小demo

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

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

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

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

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

  4. C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法

    由于项目需要,要为客户提供一个定期发送邮件的程序.本来原来自己还写过,但新写的程序一晚上也没通过测试,总是提示"不允许使用邮箱名称.服务器响应为..." 经过在网上搜索查找解决办法 ...

  5. Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  6. 利用connect建立前端开发服务器

    利用connect建立前端开发服务器 对于前后端完全分离的系统,开发时候我们需要给前端配置服务器,当然我们可以选择Nginx之类的服务器进行配置,但我们也能使用NodeJS构建高自由度的前端开发服务器 ...

  7. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

    geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module.ngx_http_geo_modu ...

  8. 转:ASP.NET MVC利用TryUpdateModel来做资料更新 (一)

    前言有使用 ASP.NET MVC 的朋友们一定多多少少有听过 TryUpdateModel,之前就看了很多有关它的文章,但在专案实务上都未曾实际使用过,而 TryUpdateModel 不仅能利用 ...

  9. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

随机推荐

  1. IOS开发之绝对布局和相对布局(屏幕适配)

    之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下 ...

  2. iOS基于MVC的项目重构总结

    关于MVC的争论 关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文). 行 ...

  3. vs 只能没有智能提示的解决方法

    我vs今天出现一点比较诡异的情况,莫名奇妙就不能自动生成我拖的控件的后端代码了(****.aspx.designer.cs) 我在网上找了下,找到一个解决方法,这里把解决方法贴下来. 网上解决方法的出 ...

  4. 千呼万唤岂出来,写款软件不容易——Visual Entity 2.0 发布

    在各位用户不继的催更中,终于完成了这次更新.Visual Entity这个软件发布于 2011年,这个软件完成后,便上班去了,也没有做什么推广工作.所以知道的用户并不多,尽管它是个非常好用.并且免费的 ...

  5. JavaScript学习笔记——数组

    javascript数组数组是一个可以存储 一组 或是 一系列 相关数据 的 容器. 一.为什么要使用数组. (1)为了解决大量相关数据的存储和使用的问题. (2)模拟真是的世界. 二.如何创建数组 ...

  6. [转]DB2时间类函数

    Src URL:http://www.cnblogs.com/wanghonghu/archive/2012/05/25/2518604.html 1.db2可以通过SYSIBM.SYSDUMMY1. ...

  7. Archlinux 添加无线网络

    From: https://wiki.archlinux.org/index.php/Beginners%27_Guide_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%8 ...

  8. Codeforces Round #195 A B C 三题合集 (Div. 2)

    A 题 Vasily the Bear and Triangle 题目大意 一个等腰直角三角形 ABC,角 ACB 是直角,AC=BC,点 C 在原点,让确定 A 和 B 的坐标,使得三角形包含一个矩 ...

  9. Uvaoj 11248 Frequency Hopping(Dinic求最小割)

    题意:1到n节点(节点之间有一定的容量),需要流过C的流量,问是否可以?如果可以输出possible, 否则如果可以扩大任意一条边的容量 可以达到目的,那么输出possible option:接着输出 ...

  10. 关于https的Error:Error Domain=NSURLErrorDomain Code=-1012

    昨天闲着没事就随便搞点demo,随便找了一个https的接口,运行之后,一直发现Error Domain=NSURLErrorDomain Code=-1012.好奇怪,请求https的配置我基本都配 ...