Мне нужно прикрепить файл календаря Outlook (.ics) к электронной почте с помощью функции mail
.Как подключить .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 = "[email protected]";
$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: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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
?>
Что мне здесь делать? Неправильно ли мое кодирование?
Ваш сценарий открыт для инъекций, ваша структура MIME даже не существует, существует множество возможностей для неправильной кодировки. Вам будет намного проще, если вы [используете PHPMailer] (https://github.com/PHPMailer/PHPMailer), как вы отметили свой вопрос. В текущей версии есть даже класс встроенного ICS. – Synchro
Мне нужно решение с опцией электронной почты. – stormec56
Почему? PHPMailer по умолчанию использует 'mail()', но ваша проблема заключается не в вызове 'mail', а в создании правильного сообщения для его передачи, и это ни в коем случае не является простым. – Synchro