PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】

PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】

前置条件

要获取邮箱联系人地址,需要掌握以下知识:

  1. 熟悉PHP语言;
  2. 熟悉邮箱联系人地址的获取方式;
  3. 了解邮箱的认证机制;
  4. 了解网络请求的相关知识。

获取163邮箱联系人地址

步骤一:登录163邮箱

使用curl库,向163发起登录请求,获取登录后的cookie。代码如下:

$url = 'https://mail.163.com/';
$username = 'your_username';
$password = 'your_password';
$postdata = array('username' => $username, 'password' => $password);
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postdata,
    CURLOPT_HEADER => true,
    CURLOPT_RETURNTRANSFER => true,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
preg_match_all('/Set-Cookie:(.*);/iU', $response, $cookies);
foreach ($cookies[1] as $cookie) {
    $cookieArray = explode('=', $cookie);
    if ($cookieArray[0] == 'Coremail.sid') {
        $sid = $cookieArray[1];
    }
}

步骤二:获取联系人地址

使用上一步获取的cookie,向163发起获取联系人地址的请求,获取联系人地址列表,代码如下:

$url = 'https://mail.163.com/contacts/call.do;jsessionid=' . $sid;
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIE => 'Coremail.sid=' . $sid,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
$matches = array();
preg_match_all('/\"email\":\"(.*?)\"/iU', $response, $matches);
$emailList = $matches[1];

获取gmail邮箱联系人地址

步骤一:登录Gmail邮箱

使用curl库,向Gmail发起登录请求,获取登录后的cookie。代码如下:

$url = 'https://accounts.google.com/ServiceLoginAuth';
$username = 'your_username';
$password = 'your_password';
$postdata = array(
    'Email' => $username,
    'Passwd' => $password,
    'continue' => 'https://www.google.com',
);
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postdata,
    CURLOPT_HEADER => true,
    CURLOPT_RETURNTRANSFER => true,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
preg_match_all('/Set-Cookie:(.*);/iU', $response, $cookies);
$cookieStr = '';
foreach ($cookies[1] as $cookie) {
    $cookieArray = explode('=', $cookie);
    $name = trim($cookieArray[0]);
    $value = trim($cookieArray[1]);
    $cookieStr .= $name . '=' . $value . ';';
}

步骤二:获取联系人地址

使用上一步获取的cookie,向Gmail发起获取联系人地址的请求,获取联系人地址列表,代码如下:

$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results=10000';
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_COOKIE => $cookieStr,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
$xml = simplexml_load_string($response);
$ns = $xml->getDocNamespaces();
$ns_gd = isset($ns['gd']) ? $ns['gd'] : '';
$ns_gd_prefix = $xml->getDocNamespaces(true)[$ns_gd];
$data = $xml->children($ns_gd_prefix)->entry;
$emailList = array();
foreach ($data as $contact) {
    $emailList[] = (string) $contact->email[0]['address'];
}

结语

以上就是获取163、gmail邮箱联系人地址的完整攻略,需要注意的是,要获取联系人地址需要模拟登录邮箱并通过网络请求获取数据,同时需要处理对应邮件服务商的认证机制。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • java连接MySQL数据库的代码

    关于Java连接MySQL数据库的代码,需要完成以下步骤: 导入MySQL驱动包 加载驱动并获取连接 创建Statement或PreparedStatement对象 执行SQL语句 处理结果 关闭连接 具体步骤及示例代码如下: Step 1. 导入MySQL驱动包 通常情况下,我们需要先从官网中下载对应版本的MySQL驱动包,并导入到Java项目中。 在Ma…

    Java 2023年5月19日
    00
  • Tomcat中catalina.out 和 catalina.log的区别和用途详解

    题目:Tomcat中catalina.out 和 catalina.log的区别和用途详解 概述 在Tomcat的日志输出中,经常出现catalina.out和catalina.log两个常用的日志文件,本篇攻略主要介绍这两个日志文件的区别和用途。 区别 在Tomcat中,catalina.out和catalina.log两个日志文件的区别主要表现在以下几个…

    Java 2023年6月2日
    00
  • 详解Spring Boot 部署jar和war的区别

    接下来我将详细讲解“详解Spring Boot 部署jar和war的区别”的完整攻略。 1. 什么是Spring Boot? Spring Boot是一个基于Spring框架的开发和部署工具,它可以帮助开发者快速搭建和部署Spring应用。Spring Boot提供了许多便捷的功能,可以使Java应用开发更加高效和简便。 2. Spring Boot部署方式…

    Java 2023年5月20日
    00
  • springboot启动feign项目报错:Service id not legal hostnam的解决

    下面是解决“springboot启动feign项目报错:Service id not legal hostname”的完整攻略。 问题描述 在使用Spring Boot启动Feign项目时,可能会出现以下报错信息: java.lang.IllegalArgumentException: Service id not legal hostname ([服务名]…

    Java 2023年5月20日
    00
  • SpringBoot整合Mybatis与thymleft实现增删改查功能详解

    我会尽可能详细地讲解“SpringBoot整合Mybatis与Thymeleaf实现增删改查功能”的攻略,让您可以轻松实现该功能。 1. 前置条件 在开始之前,确保您已经完成以下准备工作: 安装Java JDK和IDE(如Eclipse、IntelliJ IDEA等) 掌握SpringBoot、Mybatis及Thymeleaf的基础知识 2. 创建Spri…

    Java 2023年5月20日
    00
  • laypage.js分页插件使用方法详解

    1. 简介 laypage.js 是一款基于 jQuery 开发的分页插件,可以方便地在网页中实现分页功能。它具有轻量、易用、兼容性强等优点,被广泛应用于各种类型的网页中。以下是使用 laypage.js 的完整攻略。 2. 下载和引入 首先,在 laypage.js 官网上下载最新版本的 laypage.js 文件。 然后,在 HTML 页面中引入以下代码…

    Java 2023年6月16日
    00
  • mybatis如何设置useGeneratedKeys=true

    要设置useGeneratedKeys=true,需要在mybatis的mapper.xml文件中编写对应的代码。在这之前,需要了解一下什么是自动生成主键(Generated Key)、什么是useGeneratedKeys=true、以及如何使用。 自动生成主键是指在将数据插入到关系数据库中时,主键值可以由数据库自动生成,这种方式可以有效减少数据库的工作量…

    Java 2023年5月20日
    00
  • jsp 获取客户端的浏览器和操作系统信息

    要获取客户端的浏览器和操作系统信息,可以通过一些技术手段进行实现。在jsp中,可以通过以下步骤来获取。 第一步,获取客户端的UserAgent信息。UserAgent是每个浏览器都有的一个HTTP头部信息,它描述了客户端浏览器的相关信息。在jsp中,可以通过以下代码来获取UserAgent信息。 String userAgent = request.getH…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部