我正在尝试使用 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);
请勿将 ICS 作为附件发送。日历部分必须是唯一具有正确内容类型(文本/日历)的 MIME 部分(根)。