首先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. 【转】安全传输协议SSL和TLS及WTLS的原理

    一.首先要澄清一下名字的混淆 1.SSL(Secure Socket Layer)是Netscape公司设计的主要用于WEB的安全传输协议.这种协议在WEB上获得了广泛的应用. 2.IETF将SSL作 ...

  2. Hibernate一对一、一对多、多对多注解映射配置

    一对一: 一对多: 多对多:

  3. XEN的启动信息输出到“Platform timer is 14.318MHz HPET”就暂停接收的解决办法

    使用Serial Over Lan(SOL)来双机调试 XEN,在 XEN 启动时,引导信息输出到以下这一句时,就不再发送调试信息了: ...(XEN) Intel machine check rep ...

  4. oracle11g AUD$维护

    SYSTEM表空间使用率达到了85%,查出是用来记录审计记录的aud$表占用了很大的空间. 备份后truncate掉AUD$,问题临时解决.记得oracle11.2可以把aud$迁移到普通的表空 间. ...

  5. java中的三种取整函数

        舍掉小数取整:Math.floor(3.5)=3 四舍五入取整:Math.rint(3.5)=4 进位取整:Math.ceil(3.1)=4

  6. thread_fork/join并发框架2

    转自  http://blog.csdn.net/mr_zhuqiang/article/details/48300229 三.使用异步方式 invokeAll(task1,task2); 是同步方式 ...

  7. 标准事件模型和IE事件模型有哪些区别?请具体解释他们的差异。

    通常,事件传送有三个阶段:事件捕获阶段,停留目标阶段,事件冒泡阶段. 1.阶段差异 DOM事件模型包含捕获阶段和冒泡阶段,DOM事件模型可使用e.stopPropagation()来阻止事件流:IE事 ...

  8. PostgreSQL9.1 upgrade to PostgreSQL9.5rc1

    PostgreSQL9.1.0 upgrade to PostgreSQL9.5rc1 安装PG9.1端口为5432 [pgup@minion1 pg]$ ls postgresql-9.1.0.ta ...

  9. IE8下jQuery改变png图片透明度时出现的黑边问题

    png24格式的图片在用jQuery添加显示隐藏动画时发现,图片的半透明区域出现黑边? 在网上搜了搜主要有以下几种办法: 1.把图片保存成PNG-8格式. 2.把背景色一起切入并保存为JPG格式. 以 ...

  10. 10款经典的web前端特效的预览及源码

    1.CSS3响应式导航菜单 今天我给大家介绍一下如何使用纯CSS来实现的一个响应式导航菜单,我们使用的是HTML5+CSS3技术,当浏览器窗口变小或者使用手机浏览器访问的时候,原本横条菜单会收缩成一个 ...