$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('987654321@**.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每行代码前不能有空格!