网站系统实现接收邮件功能
我们在网站开发中实现发送邮件经常遇到,也有很多比较成熟的解决方案,那么接收邮件功能呢?這个功能需求开发虽然比较少遇见,也很少客户咨询,但是能否实现呢?实际是可以的。
你看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代码如下:
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);
}
?>
邮箱密码是邮箱设置的imap密码,一次获取6封邮件
if($conn) {
echo '总邮件数:' . $Email->mailTotalCount() . '
';
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 '
日期:' . date('Y-m-d H:i:s', strtotime($mailHeader['date'])) . ' |
发件人:' . $mailHeader['from'] . ' |
标题:' . $subject . ' |
正文: |
' . $Email->getBody($i) . ' |
是否已读:' . $Email->mailRead($i) . ' ID:' . $mailHeader['id'] . ' |
附件:'; foreach ($attach_list as $attach) { echo '' . decode_attach($attach) . ''; } if (count($attach_list) == 0) { echo '无附件'; } echo ' |
}
}
就这样实现了PHP获取QQ邮件的功能,截图如下
以上就是速优网络和大家分享的"网站系统实现接收邮件功能",非常感谢您有耐心的读完这篇文章,我们将为您提供更多参考使用或学习交流的信息。我们还可为您提供:企业网站建设、网站仿制、网站复制、仿站、外贸网站建设、外贸建站、公司官网制作等服务,本公司以“诚信、专业、务实、创新”的服务理念服务于客户。如您需要合作,请扫码咨询,我们将诚挚为您服务。
TAG标签: