phpmailer与日历事件和PDF附件

时间:2014-05-21 12:04:33

标签: php phpmailer

我正在尝试使用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; 

邮件的标题应该是什么?

如何使用附件和嵌入式日历事件发送单个邮件?

提前致谢.....

2 个答案:

答案 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
}
?>