我正在尝试使用PHP Mailer发送电子邮件。我附加了pdf文件,嵌入式日历事件以及日历附件(.ics),但我无法通过一封邮件发送这两种文件。
如果我评论PDF附件代码,电子邮件将使用嵌入式日历事件和.ics附件。
PDF附件的代码:
$mail->AddStringAttachment($pdf_content,$name,'base64','application/pdf');
嵌入式日历活动的代码
$i_calendar="BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:".$start_timestamp."
DTEND:".$end_timestamp."
DTSTAMP:".$start_timestamp."
ORGANIZER;CN=".$rest_name.":mailto:".$from_email."
UID:".$ics_reservation_id."
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=".$customer_name.":mailto:".$cust_email."
DESCRIPTION:test
LOCATION:".$restaurant_city."
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Reservation
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR";
$text = $i_calendar;
并将此变量添加到
$mail->AltBody = $text;
$mail->Ical = $text;
邮件的标题应该是什么?
如何使用附件和嵌入式日历事件发送单个邮件?
提前致谢.....
答案 0 :(得分:0)
有a problem with PHPMailer and proper iCal/ics support(尤其是前景和gmail无法达成一致)。正确的修复涉及PHPMailer的MIME结构的重大更改,这些更改不会很快发生,因此您需要妥协。您可以使用单独的MIME结构构建器(例如Zend_MIME)处理它,并使用Zend_Mail发送它,或者只是用它来设置PHPMailer中的消息体。
答案 1 :(得分:-1)
以下是代码:
<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
// ... other PHPMailer options
$mail->addAttachment('/pdf_file.pdf');
$mail->addAttachment('/calendar_file.ics');
if(!$mail->send()) {
// Error
} else {
// Success
}
?>
如果您确实需要将其嵌入电子邮件中,请使用以下内容(我没有对此代码进行测试):
<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
// ... other PHPMailer options
$mail->addStringAttachment($pdf_string, 'pdf_file.pdf');
$mail->addStringAttachment($ics_string, 'calendar_file.ics');
if(!$mail->send()) {
// Error
} else {
// Success
}
?>