首先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. Unity贴图锯齿

    之前在做一个Unity视频插件,发现渲染上去的贴图锯齿十分明显,开了抗锯齿也没用.最后在一次偶然的机会,发现了原来是贴图FilterMode设置有问题 之前用的是FilterMode.Point,后来 ...

  2. jsp 页面标签 积累

    http://www.cnblogs.com/xiadongqing/p/5232592.html <%@ taglib %>引入标签库 ========================= ...

  3. GMM的EM算法实现

    转自:http://blog.csdn.net/abcjennifer/article/details/8198352 在聚类算法K-Means, K-Medoids, GMM, Spectral c ...

  4. HDU 5816 Hearthstone

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Descript ...

  5. Java-Linux系统中搭建开发环境

    准备工作: 0.虚拟机中的系统→{RHEL-I386} 1.JDK→{首先要知道下载哪个版本" [zf@string ~]$ getconf LONG_BIT ":".t ...

  6. FFmpeg-20160506-snapshot-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 F ...

  7. 《BI那点儿事》数据流转换——透视

    这个和T-SQL中的PIVOT和UNPIVOT的作用是一样的.数据透视转换可以将数据规范或使它在报表中更具可读性. 通过透视列值的输入数据,透视转换将规范的数据集转变成规范程度稍低.但更为简洁的版本. ...

  8. motto7

    与其羡慕别人,还不如模仿别人的过程.

  9. CodeForces Round 196

    Div2-A 题意:有m个拼图,每个拼图有f[i]块.从中选出n个,使得 (其中块数最大减块数最小的值) 最小.思路:把f按从小到大的顺序排序,然后顺次尝试. #include<stdio.h& ...

  10. 【转】用CSS代码写出的各种形状图形的方法

    一共收集整理了图形20个,比较实用,同时也为了熟悉CSS的代码.整合了一下,有错误欢迎指出. 1.正方形 #square {width: 100px;height: 100px;background: ...