PHP: отправить ical с помощью php mailer

Я пытаюсь отправить файл с помощью php mailer

здесь id моя функция

function sendIcalEmail($firstname,$lastname,$email,$meeting_date,$meeting_name,$meeting_duration) { //Convert MYSQL datetime and construct iCal start, end and issue dates $meetingstamp = strtotime($meeting_date . " UTC"); $dtstart= gmdate("Ymd\THis\Z",$meetingstamp); $dtend= gmdate("Ymd\THis\Z",$meetingstamp+$meeting_duration); $todaystamp = gmdate("Ymd\THis\Z"); //Create unique identifier $cal_uid = date('Ymd').'T'.date('His')."-".rand()."@mydomain.com"; //Create Mime Boundry $mime_boundary = "----Meeting Booking----".md5(time()); //Create Email Headers $headers = "From: ".$from_name." <".$from_address.">\n"; $headers .= "Reply-To: ".$from_name." <".$from_address.">\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n"; $headers .= "Content-class: urn:content-classes:calendarmessage\n"; //Create Email Body (HTML) $message = ''; $message .= "--$mime_boundary\n"; $message .= "Content-Type: text/html; charset=UTF-8\n"; $message .= "Content-Transfer-Encoding: 8bit\n\n"; $message .= "<html>\n"; $message .= "<body>\n"; $message .= '<p>Dear '.$firstname.' '.$lastname.',</p>'; $message .= '<p>Here is my HTML Email / Used for Meeting Description</p>'; $message .= "</body>\n"; $message .= "</html>\n"; $message .= "--$mime_boundary\n"; //Create ICAL Content (Google rfc 2445 for details and examples of usage) $ical = 'BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT ORGANIZER:MAILTO:'.$from_address.' DTSTART:'.$dtstart.' DTEND:'.$dtend.' LOCATION:'.$meeting_location.' TRANSP:OPAQUE SEQUENCE:0 UID:'.$cal_uid.' DTSTAMP:'.$todaystamp.' DESCRIPTION:'.$meeting_description.' SUMMARY:'.$subject.' PRIORITY:5 CLASS:PUBLIC END:VEVENT END:VCALENDAR'; $message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST;charset=utf-8\n'; $message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST\n'; $message .= "Content-Transfer-Encoding: 8bit\n\n"; $message .= $ical; //SEND MAIL $mail->AddAddress($email); $mail->Subject = $subject; $mail->IsHTML(true); //$mail->AddAttachment($message); $mail->Body =$message; if(!$mail->Send()) { $message= "Error sending: " . $mail->ErrorInfo; } } 

Я использую почтовую программу php, но, к сожалению, почта не поступает в формате yp.

Пожалуйста, скажите мне, что я делаю неправильно.

Я также не получаю способ отправить заголовок по этой почте.

Попробуйте добавить тип контента «multipart / alternative». Копирование из моей работы, которая работает (она использует почту PEAR):

 protected function eF_mail_multipart($sender, $recipient, $subject, $textbody, $calendarbody, $onlyText = false, $bcc = false) { $hdrs = array('From' => $sender, 'Subject' => $subject, //'To' => $recipient, 'Date' => date("r")); if ($bcc) { //$hdrs['To'] = ''; } $params = array("text_charset" => "UTF-8", "html_charset" => "UTF-8", "head_charset" => "UTF-8", "head_encoding" => "base64"); $textparams = array( 'charset' => 'utf-8', 'content_type' => 'text/plain', 'encoding' => 'base64', ); $calendarparams = array( 'charset' => 'utf-8', 'content_type' => 'text/calendar;method=REQUEST', 'encoding' => 'base64', ); $email = new Mail_mimePart('', array('content_type' => 'multipart/alternative')); $textmime = $email->addSubPart($textbody, $textparams); $htmlmime = $email->addSubPart($calendarbody, $calendarparams); $final = $email->encode(); $final['headers'] = array_merge($final['headers'], $hdrs); $smtp = Mail::factory('smtp', array('auth' => $GLOBALS['configuration']['smtp_auth'] ? true : false, 'host' => $GLOBALS['configuration']['smtp_host'], 'password' => $GLOBALS['configuration']['smtp_pass'], 'port' => $GLOBALS['configuration']['smtp_port'], 'username' => $GLOBALS['configuration']['smtp_user'], 'timeout' => $GLOBALS['configuration']['smtp_timeout'], 'localhost' => $_SERVER["HTTP_HOST"])); $result = $smtp -> send($recipient, $final['headers'], $final['body']); return $result; } 

добавьте следующую строку в скрипт phpMailer. Мне потребовалось несколько часов, чтобы узнать меня!

$ mail-> AddStringAttachment («$ ical», «$ nameofattachtment», «base64», «text / calendar; charset = utf-8; method = REQUEST»);