Php 如何将.ics附加到电子邮件?

Php 如何将.ics附加到电子邮件?,php,email,phpmailer,email-attachments,Php,Email,Phpmailer,Email Attachments,我需要使用mail功能将Outlook日历文件(.ics)附加到电子邮件 这就是我现在拥有的,但它不起作用 <?php $firstname = $_POST["firstname"]; $lastname = $_POST["lastname"]; $email = $_POST["email"]; $companyname = $_POST["company"]; $file = "webinar-041016.ics"; $content = file_get_contents(

我需要使用
mail
功能将Outlook日历文件(.ics)附加到电子邮件

这就是我现在拥有的,但它不起作用

<?php

$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$companyname = $_POST["company"];

$file = "webinar-041016.ics";
$content = file_get_contents($file);
$content = chunk_split(base64_encode($content));

$EmailTo = "mail@mail.com";
$Subject = "New  Webinar Registration";

// prepare email body text
$Body .= "Firstname: ";
$Body .= $firstname;
$Body .= "\n";

$Body .= "Lastname: ";
$Body .= $lastname;
$Body .= "\n";

$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";

$Body .= "Company Name: ";
$Body .= $companyname;
$Body .= "\n";

$headers = 'From: mail@mail.com' . "\r\n" .
        'Reply-To: mail@mail.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

$conf_subject = "Registration Complete ...";

$conf_body = "Dear " . $firstname . ",\n\nThank you..." ;
$conf_body .= "Content-Type: text/calendar; name=\"".$file."\"\r\n" ;
$conf_body .= "Content-Transfer-Encoding: quoted-printable\r\n";
$conf_body .= "Content-Disposition: attachment; filename=\"".$file."\"\r\n\r\n";
$conf_body.= $content."\r\n\r\n";

$conf_headers = 'From: web@mail.com' . "\r\n" .
        'Reply-To: web@mail.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

// send email
$success = mail($EmailTo, $Subject, $Body, $headers);
$conf_mail = mail($email, $conf_subject, $conf_body, $conf_headers);
// redirect to success page
if ($success){
   echo "success";
}else{
    echo "invalid";
}
//Attached is an Outlook calendar invite so that you can plan your day accordingly.\n\n 
?>


我在这里该怎么办?我的编码错误吗?

您可能已经看到:

作为一项建议,您可能想了解一下哪些工作可以将您必须完成的工作缩小到一行代码:

$mail->addAttachment('/var/tmp/file.tar.gz');

您的脚本容易受到注入攻击,您的MIME结构甚至不存在,存在大量无效编码的机会。你会发现,如果你像你一样,在你的问题上加上标签,事情会变得容易得多。在当前版本中,甚至还有一个捆绑的ICS builder类。我需要带有邮件选项的解决方案。为什么?PHPMailer默认使用
mail()
,但您的问题不在于调用
mail
,而在于构建一个有效的消息传递给它,这一点也不简单。这是我被赋予的规则之一。“没有外部脚本”。我理解.ics文件可能特别难以作为附件添加。你知道如何使用
mail()
?如果是这样,请发布一个答案。。谢谢。有人教你这样编码吗??ICS非常简单。在不到几千行的代码中,您无法安全有效地完成这项工作,这是在重新发明轮子。因此,这不是一个为您编写代码的地方,特别是当您打算了解自己的时候。您需要阅读并理解和上的文档。不,这并不简单,但当你说“没有外部脚本”时,这就是你所要求的。您可以找到代码示例,但大多数都是错误的或不安全的。日历电子邮件与常规附件不同,它们是三向多部分/可选结构。幸运的是,PHPMailer内置了对这一点的支持——看看
Ical
属性。但您仍然可以将它们作为文件发送,不必将其解释为多部分/替代结构。官方上通常是这样,但实际上更为复杂。见和。