You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用garethp/php-ews无法获取邮件正文的技术求助

解决garethp/php-ews无法获取邮件正文的问题

问题原因

默认调用getMailItems()时,EWS不会返回邮件正文这类非默认属性,需要显式指定要获取的属性集合;且getBody()返回的是BodyType对象,而非直接字符串,不能直接输出。

解决方案

1. 批量获取时指定包含Body属性

修改getMailItems()的调用参数,显式声明要获取的属性,同时正确解析BodyType对象:

require_once "vendor/autoload.php";

use garethp\ews\API\Type;
use garethp\ews\MailAPI;

$api = MailAPI::withUsernameAndPassword('server', 'username', 'password');

// 自定义ItemShape,指定要获取Subject和Body属性
$items = $api->getMailItems([
    'ItemShape' => [
        'BaseShape' => 'IdOnly',
        'AdditionalProperties' => [
            'FieldURI' => [
                ['FieldURI' => 'item:Subject'],
                ['FieldURI' => 'item:Body']
            ]
        ]
    ]
]);

foreach ($items as $item) {
    if ($item instanceof Type\MessageType) {
        $emailId = $item->getItemId()->getId();
        $subject = $item->getSubject();
        echo "EmailId: " . $emailId . "<br>";
        echo "Subject: " . $subject . "<br>";
        
        $body = $item->getBody();
        if ($body instanceof Type\BodyType) {
            $bodyContent = $body->getContent();
            $bodyType = $body->getBodyType(); // 可选,获取正文类型(HTML/Text)
            
            echo "Body Type: " . $bodyType . "<br>";
            echo "Body Content: " . $bodyContent . "<br>";
        } else {
            echo "Body: No content available<br>";
        }
    }
}

2. 单独获取单封邮件(更可靠)

如果批量获取仍有问题,可以尝试通过邮件ID单独请求,确保属性完整:

// 在循环中获取到emailId后执行
$singleItem = $api->getMailItem($emailId, [
    'ItemShape' => [
        'BaseShape' => 'Default',
        'AdditionalProperties' => [
            'FieldURI' => ['FieldURI' => 'item:Body']
        ]
    ]
]);

$body = $singleItem->getBody();
if ($body instanceof Type\BodyType) {
    echo "Body Content: " . $body->getContent() . "<br>";
}

3. 额外检查点

  • 确认EWS服务器允许访问邮件正文,账号具备对应的读取权限
  • 若邮件正文是HTML格式,确保输出时正确处理转义字符

内容的提问来源于stack exchange,提问作者ElPandaRojo1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:50:15