php imap 收取邮件及其附件

本文介绍如何使用PHP的IMAP功能结合receivemail.class来收取邮件,并着重讲解了针对QQ邮箱中邮件结构的修改,以正确下载附件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

@header('Content-type: text/html;charset=UTF-8');
ignore_user_abort(); // run script in background
set_time_limit(0); // run script forever
?>
<?php

require '../../common.inc.php';
include("receivemail.class.php");

$fileSavePaht = DT_ROOT . '/api/pop/emailsave/';
$obj = new receiveMail('1469564725', 'hhfz.com', '1469564725.com', 'imap.qq.com', 'imap', '993', false);
$obj->connect();

$tot = $obj->getTotalMails(); //Total Mails in Inbox Return integer value
echo "Total Mails:: $tot<br>";

for ($i = $tot; $i > 0; $i--) {
    $head = $obj->getHeaders($i);  // Get Header Info Return Array Of Headers **Array Keys are (subject,to,toOth,toNameOth,from,fromName)
    echo "Subjects :: " . $head['subject'] . "<br>";
    echo "TO :: " . $head['to'] . "<br>";
    echo "To Other :: " . $head['toOth'] . "<br>";
    echo "ToName Other :: " . $head['toNameOth'] . "<br>";
    echo "From :: " . $head['from'] . "<br>";
    echo "FromName :: " . $head['fromName'] . "<br>";
    echo "<br><br>";
    echo "<br>*******************************************************************************************<BR>";
    echo $obj->getBody($i);  // Get Body Of Mail number Return String Get Mail id in interger
    print_r("附件下载区");
    print_r("<br />");
    $str = $obj->GetAttach($i, $fileSavePaht); // Get attached File from Mail Return name of file in comma separated string  args. (mailid, Path to store file)
    $ar = explode(",", $str);
    foreach ($ar as $key => $value)
        echo ($value == "") ? "" : "Atteched File :: " . $value . "<br>";
    echo "<br>------------------------------------------------------------------------------------------<BR>";
    $obj->removeEamil($i); // Delete Mail from Mail box
}
$obj->close_mailbox();   //Close Mail Box
?>

使用了receivemail.class,其中的下载附件方法已被修改(注意信件的结构信息,qq邮箱的信件结构与原生代码不一致)

<?php

class receiveMail {

    var $server = '';
    var $username = '';
    var $password = '';
    var $marubox = '';
    var $email = '';
    var $backUp = '{imap.qq.com}&UXZO1mWHTvZZOQ-/beifen';

    function receiveMail($username, $password, $EmailAddress, $mailserver = 'localhost', $servertype = 'pop', $port = '110', $ssl = false) { //Constructure
        if ($servertype == 'imap') {
            if ($port == '')
                $port = '143';
            $strConnect = '{' . $mailserver . ':' . $port . '/imap/ssl}INBOX';
        }
        else {
            $strConnect = '{' . $mailserver . ':' . $port . '/pop3' . ($ssl ? "/ssl" : "") . '}INBOX';
        }
        $this->server = $strConnect;
        $this->username = $username;
        $this->password = $password;
        $this->email = $EmailAddress;
    }

    function connect() {
        $this->marubox = @imap_open(
receivemail是一个专门用来接收邮件PHP类,支持POP3和IMAP邮件协议。 可以接收邮件邮件附件。 include("receivemail.class.php"); 02 // 创建一个 reciveMail 对象 03 $obj = new receiveMail('abc@abc.com','xxxxxx','abc@abc.com','pop.abc.com','pop3','110',false); 04 // 连接到邮件服务器 05 $obj->connect(); //If connection fails give error message and exit 06 // 读取未读邮件数 07 $tot = $obj->getTotalMails(); //Total Mails in Inbox Return integer value 08 09 echo "收到$tot封邮件::"; 10 for($i = $tot; $i > 0; $i--) 11 { 12 $head = $obj->getHeaders($i); // 读取获取邮件头信息,返回数组 **数组键值为 (subject,to,toOth,toNameOth,from,fromName) 13 echo "主题 :: ".$head['subject'].""; 14 echo "收件人 :: ".$head['to'].""; 15 echo "抄送 :: ".$head['toOth'].""; 16 echo "发件人 :: ".$head['from'].""; 17 echo "发件人名称 :: ".$head['fromName'].""; 18 echo ""; 19 echo "*******************************************************************************************"; 20 echo $obj->getBody($i); // 邮件正文 21 $str = $obj->GetAttach($i,"./"); // 获取邮件附件,返回的文件名以逗号隔开。 例如. (mailid, Path to store file) 22 $ar = explode(",",$str); 23 foreach($ar as $key=>$value) 24 echo ($value == "") ? "" : "Atteched File :: " . $value . ""; 25 echo "------------------------------------------------------------------------------------------"; 26 //$obj->deleteMails($i); // Delete Mail from Mail box 27 } 28 $obj->close_mailbox(); //Close Mail Box
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值