企业微信第三方应用发邮件流程及java代码

具体思路:

1、申请企业微信。

2、在企业微信创建一个邮箱。

3、自建第三方应用。

4、从第三方应用,获取“Secret”值。

5、在第三方应用中,建立企业可信IP。

6、获取企业corpid。

7、写java代码,获取access_token。 参考:开始开发 - 接口文档 - 企业微信开发者中心

8、继续写代码,或者postman调用,发邮件。

具体内容:

1、申请企业微信。

 

2、在企业微信创建一个邮箱。

 

3、自建第三方应用。

 

4、从第三方应用,获取“Secret”值。

 

5、在第三方应用中,建立企业可信IP,这个就是发邮件的服务器的IP,或者Java代码运行的ip,一般开发环境,采取获取本机IP即可。注意,先要设置一个域名,然后再设置IP白名单。 这里很重要!没这个,发邮件调用没用。

 

6、获取企业corpid。

 

 7、写java代码,获取access_token。 参考:开始开发 - 接口文档 - 企业微信开发者中心


//package com.test;

import com.mysql.cj.xdevapi.JsonParser;

import javax.net.ssl.HttpsURLConnection;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.URL;

import java.security.KeyManagementException;

import java.security.NoSuchAlgorithmException;



/**

 * 基于HttpsURLConnection实现客户端https请求

 *

 */

public class Main {

    private static final String METHOD_GET = "GET";

    private static final String METHOD_POST = "POST";

    /**

     * doGet

     */

    private static void httpsGet(String url) throws NoSuchAlgorithmException, KeyManagementException, IOException {

// 创建连接对象

        HttpsURLConnection connection = getHttpsURLConnection(url, METHOD_GET);

        connection.addRequestProperty("","");

        connection.connect();

//        System.out.println("cipersuit used:>>" + connection.getCipherSuite()+"<<");


// 读取连接响应内容

        getresponse(connection);

    }

    /**

     * doPost

     */

    private static void httpsPost(String url, String params) throws NoSuchAlgorithmException, IOException, KeyManagementException {

// 创建连接对象

        HttpsURLConnection connection = getHttpsURLConnection(url, METHOD_POST);

// 发送POST请求必须设置如下两行

        connection.setDoOutput(true);

        connection.setDoInput(true);

        connection.connect();

// 获取URLConnection对象对应的输出流

        PrintWriter out = null;

        try {

            out = new PrintWriter(connection.getOutputStream());

// 发送请求参数

            out.print(params);

            out.flush();

        } finally {

            if (out != null) {

                out.close();

            }

        }

        getresponse(connection);

    }

    /**

     * 读取连接响应内容

     */

    private static void getresponse(HttpsURLConnection connection) throws IOException {

        BufferedReader br = null;

        try {

            br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));

            String inputLine;

            StringBuilder sb = new StringBuilder();

            while ((inputLine = br.readLine()) != null) {

                sb.append(inputLine);

            }

            System.out.println("response:>>>"+sb.toString()+"<<<");

            System.out.println("responseMsg:>>" + connection.getResponseMessage() + "<<");
            System.out.println("responseCode:" + connection.getResponseCode());

        } finally {

            if (br != null) {

                br.close();

            }

        }

    }

    private void parseJSONWithJSONObject(String JsonData) {
        try {
//            JsonParser parse =new JsonParser();  //创建json解析器
//            try {
//                JsonObject json=(JsonObject) parse.parse(new FileReader("weather.json"));  //创建jsonObject对象
//                System.out.println("resultcode:"+json.get("resultcode").getAsInt());  //将json数据转为为int型的数据
//                System.out.println("reason:"+json.get("reason").getAsString());     //将json数据转为为String型的数据
//
//                System.out.println("id" + id + ";name" + name + ";version" + version);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }



    /**

     * 获取连接对象

     */

    private static HttpsURLConnection getHttpsURLConnection(String url, String method) throws IOException, NoSuchAlgorithmException, KeyManagementException {

        URL myUrl = new URL(url);

// 创建连接对象

        HttpsURLConnection connection = (HttpsURLConnection) myUrl.openConnection();

        connection.setRequestMethod(method);

// 设置SSLSocketFactory对象(若不指定算法套,getSslContext().getSocketFactory()即可)

        connection.setSSLSocketFactory(new MySSLSocketFactory());

// 验证hostname,全部允许

        connection.setHostnameVerifier((hostname, sslSession) -> true);

// 设置通用请求属性

        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36");

        connection.setRequestProperty("Connection", "Keep-Alive");

        connection.setRequestProperty("Charset", "UTF-8");

        return connection;

    }

    public static void main(String[] args) throws Exception {

        String corpid="wwc8c90a0acd";
        String corpsecret="6jvihNh6un_nx8rtnjo";
        String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpid+"&corpsecret="+corpsecret;

//        String access_token = "";
//        String url = "https://qyapi.weixin.qq.com/cgi-bin/exmail/app/compose_send?access_token="+access_token;



        httpsGet(url);

    }

}

运行结果:

8、继续写代码,或者postman调用,发邮件。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值