首页 > 解决方案 > 如何在 php 中使用 IMAP 显示 Gmail 电子邮件中的所有附件文件

问题描述

我正在尝试构建一个小型网络邮件应用程序。使用这个脚本我必须通过作曲家下载https://github.com/benhall14/php-imap-reader

当我阅读收件箱中的所有电子邮件时,我想显示多个文件,例如图像或 pdf 或其他文件,但问题是当我尝试显示时它只显示一个文件echo $attachment->filePath()

例如,我有一封附有两张图片的电子邮件,但功能是通过该电子邮件向我显示一张图片?

但是,该电子邮件附加了多个文件,并且还指导我如何仅使用此脚本获取文件扩展名。

源代码

require 'vendor/autoload.php';

use benhall14\phpImapReader\Email;
use benhall14\phpImapReader\EmailAttachment;
use benhall14\phpImapReader\Reader;

define('IMAP_USERNAME', '');
define('IMAP_PASSWORD', '');
define('IMAP_MAILBOX', '');
define('ATTACHMENT_PATH', __DIR__ . '/attachments/');

try {
    $imap = new Reader(IMAP_MAILBOX, IMAP_USERNAME, IMAP_PASSWORD, ATTACHMENT_PATH);
    
    $imap->limit(10)->get();

    foreach ($imap->emails() as $email) {
        echo '<div>';
            
        echo '<div>' . $email->fromEmail() . '</div>';
            
        echo '<div>' . $email->subject() . '</div>';
            
        echo '<div>' . $email->date('Y-m-d H:i:s') . '</div>';

        if ($email->hasAttachments()) {
            foreach ($email->attachments() as $attachment) {
                echo '<div>' . $attachment->filePath() . '</div>';
            }
        }
        
        #print_r($email->plain());
        #print_r($email->html());

        echo '</div><br/><br/><hr />';
    }
} catch (Exception $e) {
    die($e->getMessage());
}

截图

在此处输入图像描述

在电子邮件中,我附加了两张图片,但功能显示单个图片路径?

在此处输入图像描述

标签: phpemailgmailimap

解决方案


推荐阅读