【问题标题】:Sending an i calendar as mail body in php mailer在 php mailer 中发送 i 日历作为邮件正文
【发布时间】:2021-02-24 05:56:23
【问题描述】:

我正在使用 php mailer 向收件人发送邮件,我需要发送日历事件,我知道如何将它们作为附件发送,但我想在邮件正文中发送它们。有可能吗?

$message = "You have been invited to the online meeting '".$schedule->schedule_name.
                                    "', On ".$date." (".$start_time."-".$end_time.") by Tuti.World \n
                                    (See attachments for more details)";

        $ical_content = "BEGIN:VCALENDAR
                                        VERSION:2.0
                                        PRODID://Drupal iCal API//EN
                                        BEGIN:VEVENT
                                        UID:http://www.icalmaker.com/event/d8fefcc9-a576-4432-8b20-40e90889affd
                                        DTSTAMP:".$date.
                                        "DTSTART:".$start_time.
                                        "DTEND:".$end_time.
                                        "SUMMARY:Online Meeting
                                        END:VEVENT
                                        END:VCALENDAR";



$mail->msgHTML($message);
$mail->addStringAttachment($ical_content,$file,'base64','text/calendar');
$mail->send();

这些是当前邮件正文和日历事件的代码块...

【问题讨论】:

  • 您的意思是要将 iCal 文件与内容内联吗?我认为这是不可能的。
  • 是的,我试图将 i cal 添加到正文中,如果可能的话, i cal 不需要是文件。我之前没有使用过 php mailer 或 i cal 事件,所以我不知道这些限制。

标签: php laravel email phpmailer icalendar


【解决方案1】:

PHPMailer 具有内置的 iCal 支持,它用于在 multipart/alternative 结构中创建第三个 text/calendar 部分。这是“RFC 方式”,但不幸的是,iCal 客户端一团糟,在 Outlook、Gmail 和 Apple Mail 中没有任何东西可以始终如一地工作。最好的方法是使用标准结构,但也添加相同的数据作为附件(就像你已经在做的那样)。您需要在代码中进行的唯一更改是添加以下行:

$mail->Ical = $ical_content;

您还需要非常小心您的 iCal 内容 - Outlook 特别挑剔,最微小的错误都会导致它根本无法正常工作,因此我建议使用 生成的 iCal 字符串进行测试> 从 Outlook 开始,以便您将 iCal 发送与您遇到的与其中内容相关的任何其他问题隔离开来。

【讨论】:

  • 很高兴听到这个消息!如果这回答了您的问题,请将此答案标记为此类(单击旁边的复选标记)。
  • 它不会在正文中插入 i cal 事件,它会创建另一个附件,因此它仍然无法回答我的问题。但是关于我如何工作的指示很有帮助
  • 哪种方法有效很大程度上取决于您使用的客户端。有些人使用多部分,有些人想要一个附件。只有一个副本,没有办法让它在所有客户端都同样好用,所以你必须妥协。如果您想让它在所有客户端中仅使用一份 iCal 数据副本,那么您目前要求的是不可能的。例如,谷歌日历邀请在 Apple Mail 或 Outlook 中没有什么特别之处,它们只是有一个 ics 附件。同样,Outlook 多部分在 Gmail 或 Apple Mail 中也不起作用。 ICS 附件始终是可行的后备方案。
  • 我能得到一个答案吗?如何在gmail和苹果邮件上发布一个?
  • 看地址,给每一个发送不同的格式。这不是一个很好的策略,因为您无法通过查看收件人的地址来判断收件人正在使用哪个客户端 - 完全有可能在 Outlook 中阅读 gmail.com 邮件,在 Gmail 中阅读 Outlook.com 邮件。我同时拥有 office365 和 gmail 帐户,但我都从 Apple Mail 中阅读。
【解决方案2】:

多年来,我一直在使用 phpmailer 来处理事件,它一直有效。我总是只对苹果有问题。使用 IOS 13,我不得不等待 4 个月让他们修复它。现在与 14.4 相同的问题,是/否/也许按钮不再出现,所以如果我从 iphone 插入事件,它不会与 Outlook 同步。反之亦然。如果我从 iphone 接受它,我会更新事件,当我从 Outlook 接受它时,会自动在 iphone 上找到一个孤立的事件并更新它,我认为因为 id 无论如何都是唯一的。继续犯错误的是frunstrante apple side。

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多