使用 MailGun API 发送 .ics 文件

问题描述 投票:0回答:1

我正在尝试使用 MailGun API 发送日历邀请。我的 .ics 日历内容在 Gmail 中可以正常工作,但在 Outlook 中无法正确显示。如何确保通过 MailGun API 发送时我的 .ics 日历内容为 Outlook 用户正确显示?

这是我使用 PHP 的完整代码

$domain = $data['domain'];
$api_key = $data['api_key'];
$from = $data['from'];
$to = $data['to'];
$subject = $data['subject'];
$body = $data['body'];

$ics_content = isset($data['ics_content']) ? $data['ics_content'] : null;
$attachments = base64_encode($ics_content);

$request = $this->httpClient->request('POST', "https://api.mailgun.net/v3/{$domain}/messages",[
    'auth' => ['api', $api_key],
    RequestOptions::MULTIPART => [
        [
            'name' => 'from',
            'contents' => $from,
        ],
        [
            'name' => 'to',
            'contents' => $to,
        ],
        [
            'name' => 'subject',
            'contents' => $subject,
        ],
        [
            'name' => 'html',
            'contents' => "<html>{$body}</html>",
        ],
        [
            'name' => 'attachment', // Name of the attachment parameter
            'contents' => base64_decode($attachments), // iCalendar content
            'filename' => 'invite.ics', // Filename for the attachment
        ],
    ],
]);

$statusCode = $request->getStatusCode();
$response_data = json_decode($request->getBody()->getContents(), true);
php outlook email-attachments icalendar mailgun
1个回答
0
投票

请勿将 ICS 作为附件发送。日历部分必须是唯一具有正确内容类型(文本/日历)的 MIME 部分(根)。

© www.soinside.com 2019 - 2024. All rights reserved.