电子邮件附件使用了错误的文件扩展名

Email attachment uses the wrong file extension

我正在编写一些代码来创建一个 iCalendar,然后发送一封带有所创建事件的 ics 文件的 Outlook 电子邮件,它按预期工作,但有一个问题。

当电子邮件被发送时,附件被赋予了错误的名称(ATT00001.bin 而不是 Meeting.ics)并且它不是作为 .ics 而是作为 .bin 发送的。文件的内容仍然和它们应该的一样。

感谢任何帮助,谢谢!

        use Spatie\IcalendarGenerator\Components\Calendar;
        use Spatie\IcalendarGenerator\Components\Event;
        ...

        $calendar = Calendar::create('Company test meeting')
            ->event(Event::create()
            ->name('Company test meeting')
            ->description('A test meeting about Company')
            ->startsAt(new \DateTime('24-03-2022 10:00'))
            ->endsAt(new \DateTime('24-03-2022 11:30'))
        )->get();
        
        $mailer = new Mailer('default');
        $mailer->setAttachments([
            'Meeting.ics' => [
                'data' => $calendar,
                'contentDisposition' => false
            ]
        ]);
        $mailer->setFrom(['replacement@outlook.com' => 'CompanyName'])
            ->setTo('replacement@outlook.com')
            ->setSubject('Company meeting')
            ->deliver('Hey there I would like to have a meeting about Company');

所以我想通了。 当我写电子邮件时,我正在使用 cakephp 4 食谱。 那里说:“mimetype 和 contentId 在这种形式中是可选的。”我错误地认为我不需要它。

ics 文件的 mimetype 是 text/calendar 所以我只是将其添加到我的 setAttachments 中,如下所示:

$mailer = new Mailer('default');
        $mailer->setAttachments([
            'Meeting.ics' => [
                'data' => $ical,
                'mimetype' => 'text/calendar', //I added the mimetype here
                'contentDisposition' => false
            ]
        ]);
        $mailer->setFrom(['private@outlook.com' => 'Company'])
            ->setTo('private@outlook.com')
            ->setSubject('Companymeeting')
            ->deliver("Dummy text " . $attendee . " About " . $description . "");

        $this->set('calendar', $ical);

我仍在研究如何获得正确的文件名,但这并不像文件扩展名那么重要。但如果有人知道,我很想知道。