zoukankan      html  css  js  c++  java
  • java 验证邮件是否可用

    附代码:

          package com.bjike.goddess.intromanage.excel;
    
          import org.apache.xmlbeans.impl.util.Base64;
    
          import javax.net.ssl.SSLSocketFactory;
          import java.io.*;
          import java.net.Socket;
          import java.net.SocketTimeoutException;
          import java.util.ArrayList;
          import java.util.List;
          import java.util.concurrent.CountDownLatch;
    
          public class MailPasswordCheck implements Runnable {
    
                 private String userName;
                 private String password;
                 private String success = "update";
    
          public MailPasswordCheck(String userName, String password) {
               this.userName = userName;
               this.password = password;
          }
    
    private final static String host = "contacts.163.com";
    private final static int port = 443;
    private final static int TIMEOUT = 3;
    private final static int repeat = 3;
    private final static String path = "/.well-known/carddav";
    private final static SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
    private final static String xmlData = "<?xml version="1.0"?> <d:propfind xmlns:d="DAV:" xmlns:cs="http://calendarserver.org/ns/"> <d:prop> <d:displayname /> <d:getetag /> </d:prop> </d:propfind>";
    private final CountDownLatch runCount = new CountDownLatch(3);
    
    
    private String checkPassword() throws IOException {
    
        Socket socket = ssf.createSocket(host, port);
        socket.setSoTimeout(TIMEOUT * 1000);
        PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
        out.println("PROPFIND " + path + " HTTP/1.1");
        out.println("Host: " + host);
        String userCredentials = userName + ":" + password;
        String basicAuth = "Basic " + new String(Base64.encode(userCredentials.getBytes()));
        String authorization = "Authorization: " + basicAuth;
        out.println(authorization.trim());
        out.println("Content-Length: " + xmlData.length());
        out.println("Content-Type: text/xml");
        out.println("Depth: 1");
        out.println();
        out.println(xmlData);
        out.flush();
    
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
        List<String> counts = new ArrayList<>(1);
        if (counts.size() == 0) {
            try {
                counts.add(in.readLine());
            } catch (SocketTimeoutException st) {
                return "timeout";
            }
        }
        in.close();
      //        out.close();
     //        socket.close();
        if (counts.get(0).contains("207")) {
            return "true";
        } else {
            return "false";
        }
    }
    
    
    @Override
    public void run() {
        for (int i = 0; i < repeat; i++) {
            try {
                String result = checkPassword();
                if (result.equals("true")) {
                    success = "success";
                    for(int j =0;j<=runCount.getCount()+1;j++){
                        runCount.countDown();
                    }
                    break;
                } else if (result.equals("false")) {
                    success = "update";
                    for(int j =0;j<=runCount.getCount()+1;j++){
                        runCount.countDown();
                    }
                    break;
                } else {
                    success = "timeout";
                    runCount.countDown();
                    System.out.println("repeating ...");
                    continue;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    public String getSuccess() {
        try {
            runCount.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return success;
    }
    
    
    public static void main(String[] args) {
        MailPasswordCheck mailPasswordCheck = new MailPasswordCheck("xx.com", "xx");
        new Thread(mailPasswordCheck).start();
        System.out.println(mailPasswordCheck.getSuccess());
    }   }
  • 相关阅读:
    P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷
    P2212 [USACO14MAR]浇地Watering the Fields 洛谷
    Python字体颜色设置
    Python小游戏 -- 猜数字
    数据结构 -- 链表&双向链表
    数据结构 -- 队列 & 循环队列 -- 数组实现
    数据结构 -- 栈的数组实现法
    洛谷P1036 选数
    如何让c语言使用结构体近似模拟c++中的类
    对c语言回调函数的理解
  • 原文地址:https://www.cnblogs.com/heavenTang/p/7852848.html
Copyright © 2011-2022 走看看