PHPMailer傳送outlook日曆郵件踩過的坑
阿新 • • 發佈:2018-12-11
$mail=new PHPMailer();
$startTime = "2018-12-18 16:00";
$endTime = "2018-12-18 18:00";
$inviteName = "這是一封郵件測試";
$title = "這是一封郵件測試";
$address = "會議室1";
$content = "你好,這是一封郵件測試";
$cal_msg ="BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ORGANIZER:MAILTO:" . $inviteName . "
DTSTART:" .date('Ymd', strtotime($startTime)) ."T". date('His', strtotime($startTime)). "Z
DTEND:" .date('Ymd', strtotime($endTime)) ."T". date('His', strtotime($endTime)). "Z
UID:" . time() . rand(100000,999999) . "
LOCATION:".$address ."
TRANSP:OPAQUE
SEQUENCE:0
DTSTAMP:" .date('Ymd', time()) ."T". date('His', time()). "Z
CATEGORIES:Meeting
SUMMARY:" . $title . "
PRIORITY:5
X-MICROSOFT-CDO-IMPORTANCE:1
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:-PT3D
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
BEGIN:VTIMEZONE
TZID:US/Central
END:VTIMEZONE
END:VEVENT
END:VCALENDAR";
$mail->Ical = $cal_msg;
$mail->AltBody = $cal_msg;
// 設定郵件編碼
$mail->setLanguage('zh_cn');
$mail->SMTPDebug = 1;
// 使用smtp鑑權方式傳送郵件
$mail->isSMTP();
// smtp需要鑑權 這個必須是true
$mail->SMTPAuth = true;
// 連結qq域名郵箱的伺服器地址
$mail->Host = 'smtp.qq.com';
// 設定使用ssl加密方式登入鑑權
$mail->SMTPSecure = 'ssl';
// 設定ssl連線smtp伺服器的遠端伺服器埠號
$mail->Port = 465;
// 設定傳送的郵件的編碼
$mail->CharSet = 'UTF-8';
// 設定發件人暱稱 顯示在收件人郵件的發件人郵箱地址前的發件人姓名
$mail->FromName = '郵件傳送測試';
// smtp登入的賬號 QQ郵箱即可
$mail->Username = ' [email protected]';
// smtp登入的密碼 使用生成的授權碼
$mail->Password = '********';
// 設定發件人郵箱地址 同登入賬號
$mail->From = '[email protected]';
// 郵件正文是否為html編碼 注意此處是一個方法
$mail->isHTML(true);
// 設定收件人郵箱地址
$mail->addAddress(' [email protected]**.com');
// 新增該郵件的主題
$mail->Subject = $content;
// 新增郵件正文
$mail->Body = '<h1>郵件主題郵件傳送測試</h1>';
// 傳送郵件 返回狀態
$mail->send();
參考:
https://stackoverflow.com/questions/39597121/not-supported-calendar-message-with-php
版本
“php”: “^7.1.3”
“laravel/framework”: “5.7.*”
“phpmailer/phpmailer”: “^6.0”
注意
iCalendar每行程式碼前不能有空格!