产品导航
  • 网页特效源码
    图片代码
    导航菜单
    选项卡/滑动门
    文字特效
    表单代码
    提示框/浮动层/弹出层
    DIV CSS
    html5 css3
    其他特效
  • 网站模板源码
    电脑、通讯、数码
    家具洁具、日用品
    建材、五金、装饰
    纺织、服装、鞋帽
    礼品玩具、工艺品
    家电、照明、电子
    文具、乐器、体育
    机电、仪器、设备
    食品、饮料、酒类
    汽车、摩托电动车
    能源、环保、节能
    冶金、金属、零件
    农业、水产、养殖
    矿产、石油、化工
    珠宝首饰、化妆品
    医药医器、保健品
    包装、印刷、造纸
    书画、艺术、收藏
    通用、其他制造业
    房地产、建筑装修
    餐饮、咖啡、茶楼
    咨询、策划、翻译
    金融、证券、典当
    健身、运动俱乐部
    家政、保洁、搬家
    医院、诊所、保健
    旅游宾馆、农家乐
    美容、休闲、养生
    婚庆、摄影、影楼
    仓储、物流、租车
    维修、保养、回收
    广告、会展、设计
    文化、教育、培训
    政府、协会、机构
    其他行业网站
  • 小程序源码
  • 游戏源码
  • 微信公众平台源码
  • 营销软件
  • 云虚拟主机
    全能型云虚拟主机
    海外免备案主机
    高防云享主机
    专业型云虚拟机
    Linux专业型云虚拟机
    .NET专业型云虚拟机
    JSP专业型云虚拟机
    百度云虚拟机(BCH)
  • 旅游系统
    旅游网站模板
    组合套餐
    产品应用
    营销应用
    内容应用
    供应分销应用
    插件接口应用
    SAAS版本应用
  • Cisco设备
    交换机
    路由器
    无线
    网络管理
    接口和模块
    光网络
  • IBM设备
    服务器
  • 华为设备
    交换机
    路由器
    WLAN
    存储
  • 智能设备

网站系统实现接收邮件功能

 二维码
发表时间:2021-05-27 19:35
我们在网站开发中实现发送邮件经常遇到,也有很多比较成熟的解决方案,那么接收邮件功能呢?這个功能需求开发虽然比较少遇见,也很少客户咨询,但是能否实现呢?实际是可以的。

你看Foxmail客户端也能接收邮件,说明邮件系统都有这种服务,支持第三方通过一定的认证方式后,可以把邮件信息给第三方。

具体如何实现呢?下面天隆网络给大家介绍PHP如何获取QQ邮件。

获取邮件需要准备的基本资料是,邮箱的账号和获取密码,然后设置邮箱开启imap功能,需要注意的是:获取密码是imap功能设置提供的密码,不是登陆密码。

邮箱设置方法如下:

进入邮箱-顶部菜单-【设置】 - 【账户】选项卡 - 【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】项,如下截图,开启IMAP服务,通过手机验证码认证后会给你一个获取密码。

有了账号名和获取密码后,就是程序编写和服务器的问题,正常情况下PHP没有安装IMAP扩展,所以大部分服务器需要开启IMAP扩展,

如果是Windows服务器,修改PHP.ini文件,把imap扩展前面的分号去掉,然后重启PHP服务即可。

如果是Linux服务器则稍微麻烦一些,这里我遇到的坑是WDCP安装的PHP版本没有带imap扩展文件,需要自己下载,然后上传到对应文件夹后,才能安装。

安装流程如下

首先,用Putty等工具进入linux

进入php源码包ext目录,再进入imap目录

cd /www/wdlinux/apache_php-5.5.38/include/php/ext/imap/
/www/wdlinux/apache_php-5.5.38/bin/phpize
./configure --with-php-config=/www/wdlinux/apache_php-5.5.38/bin/php-config --with-kerberos --with-imap --with-imap-ssl --with-libdir=lib64
make
make install

如果出错 安装   yum -y install libc-client-devel

修改php.ini

[imap]
extension_dir = /www/wdlinux/apache_php-5.5.38/lib/php/extensions/no-debug-non-zts-20121212
extension = imap.so

最后重启php即可

相关读取邮件的PHP代码如下:

<?php
ini_set("display_errors", "On");
error_reporting(E_ERROR);
header("Content-type: text/html; charset=utf-8");

$mailServer = 'imap.qq.com'; //IMAP server address
$mailLink = "{{$mailServer}:143}INBOX"; // 143 is the port when not SSL
$mailUser = $_GET['email'];   // email address
$mailPass = $_GET['pwd'];// client authorization code
$mail_i = intval($_GET['index']);

if($mailUser != '' && $mailPass != '') {
    $Email = new Email();
    $conn = $Email->mailConnect($mailServer, 143, $mailUser, $mailPass);
}

function decode_title($str) {
    $arr = imap_mime_header_decode($str);
    return $arr[0]->text;
}

function decode_attach($str) {
    $arr = imap_mime_header_decode($str);
    return iconv($arr[0]->charset, "utf-8", $arr[0]->text);
}
?>

<!doctype html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>天隆网络-接收邮件测试</title>
    </head>
    <body>
        <div style="padding:40px;width:400px;">
            <form method="get" action="">
                <div class="input-group">
                    <span class="input-group-addon" id="basic-addon1">邮箱账号:</span>
                    <input type="text" class="form-control" value="<?php echo $mailUser;?>" name="email" placeholder="输入QQ邮箱账号:" aria-describedby="basic-addon1">
                </div>
                <div class="input-group">
                    <span class="input-group-addon" id="basic-addon1">邮箱密码:</span>
                    <input type="text" class="form-control" value="<?php echo $mailPass;?>" name="pwd" placeholder="QQ邮箱密码:" aria-describedby="basic-addon1">

                </div>
                <div class="input-group">
                    <span class="input-group-addon" id="basic-addon1">邮件开始数:</span>
                    <input type="number" class="form-control" value="<?php echo $mail_i;?>" name="index" placeholder="邮件开始数" value="1" aria-describedby="basic-addon1">

                </div>
                <button type="submit" class="btn btn-default">获取邮件</button>
                <input type="hidden" name="action" value="get" />
            </form>
            邮箱密码是邮箱设置的imap密码,一次获取6封邮件
        </div>
<?php
if($conn) {
echo '总邮件数:' . $Email->mailTotalCount() . '<br>';
for ($i = $mail_i; $i < $mail_i+6; $i++) {
    $mailHeader = $Email->mailHeader($i);
    $attach_list = $Email->getAttach($i, "attach/");
    $subject = decode_title($mailHeader['subject']);
    // print_r($mailHeader);
    echo '<table border=1><tr><td><b>日期:</b>' . date('Y-m-d H:i:s', strtotime($mailHeader['date'])) . '</td></tr><tr><td><b>发件人:</b>' . $mailHeader['from'] . '</td></tr><tr><td><b>标题:</b>' . $subject . '</td></tr>';
    echo '<tr><td>正文:</td></tr><tr><td>' . $Email->getBody($i) . '</td></tr><tr><td>是否已读:' . $Email->mailRead($i) . '   ID:' . $mailHeader['id'] . ' </td></tr>';
    echo '<tr><td>附件:';
    foreach ($attach_list as $attach) {
        echo '<a href="attach/' . decode_attach($attach) . '" target="_blank">' . decode_attach($attach) . '</a>';
    }
    if (count($attach_list) == 0) {
        echo '无附件';
    }
    echo '</td></tr>';
    echo '</table>';
}
}


就这样实现了PHP获取QQ邮件的功能,截图如下

文章分类: 网站建设
分享到:
关注我们
关于我们
天隆网络科技有限责任公司励志为顾客提供出更好的网站建设、二次开发、管理、维护系统等。本团队为此收录了大量的技术和相关人员。公司积极鼓励客户前来本站交流互动,积极鼓励为本站提出创新的好点子 本团队专注于企业的网站设计制作,为刚接触网站开发和运营的客户提供更好的帮助到你的解决方案。
服务范围
联系我们
QQ:1602299552
邮箱:dhtlit@qq.com
付款方式:现金,刷卡,支付宝,微信