mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 14:41:29 +01:00
* Calendar Notification: handle calendar requests correctly as multipart/alternative; adding AltExtended to phpmailer; beware parts of multipartAlternative must be in decreasing order of preference (text/calendar as the last part)
This commit is contained in:
parent
561c650c29
commit
89a1d1d419
@ -99,20 +99,17 @@ class notifications_email implements notifications_iface {
|
||||
//error_log(__METHOD__.__LINE__.array2string($_attachments));
|
||||
if ($_attachments && stripos($_attachments[0]->type,"text/calendar; method=")!==false)
|
||||
{
|
||||
$this->mail->Body = $body_plain;
|
||||
$this->mail->AltBody = $_attachments[0]->string;
|
||||
$this->mail->AltBodyContentType = $_attachments[0]->type;
|
||||
$this->mail->AltExtended = $_attachments[0]->string;
|
||||
$this->mail->AltExtendedContentType = $_attachments[0]->type;
|
||||
unset($_attachments[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->mail->IsHTML(true);
|
||||
$this->mail->Body = $body_html;
|
||||
$this->mail->AltBody = $body_plain;
|
||||
if(is_array($_attachments) && count($_attachments) > 0) {
|
||||
foreach($_attachments as $attachment) {
|
||||
$this->mail->AddStringAttachment($attachment->string, $attachment->filename, $attachment->encoding, $attachment->type);
|
||||
}
|
||||
}
|
||||
$this->mail->IsHTML(true);
|
||||
$this->mail->Body = $body_html;
|
||||
$this->mail->AltBody = $body_plain;
|
||||
if(is_array($_attachments) && count($_attachments) > 0) {
|
||||
foreach($_attachments as $attachment) {
|
||||
$this->mail->AddStringAttachment($attachment->string, $attachment->filename, $attachment->encoding, $attachment->type);
|
||||
}
|
||||
}
|
||||
if(!$error=$this->mail->Send()) {
|
||||
throw new Exception("Failed sending notification message via email.$error".print_r($this->mail->ErrorInfo,true));
|
||||
|
@ -136,6 +136,21 @@ class PHPMailer {
|
||||
*/
|
||||
public $AltBody = '';
|
||||
|
||||
/**
|
||||
* Sets the ContentType of the AltExtended; default is text/plain
|
||||
* usually used by text/calendar Invitations/Metting requests
|
||||
* @var string
|
||||
*/
|
||||
public $AltExtendedContentType = 'text/plain';
|
||||
|
||||
/**
|
||||
* Sets the text-only body of the message. This automatically sets the
|
||||
* email to multipart/alternative. This is used to send calendar meeting requests as
|
||||
* Outlook does. It adds an 3rd alternative part to multipart/alternative
|
||||
* @var string
|
||||
*/
|
||||
public $AltExtended = '';
|
||||
|
||||
/**
|
||||
* Sets word wrapping on the body of the message to a given number of
|
||||
* characters.
|
||||
@ -598,7 +613,7 @@ class PHPMailer {
|
||||
}
|
||||
|
||||
// Set whether the message is multipart/alternative
|
||||
if(!empty($this->AltBody)) {
|
||||
if(!empty($this->AltBody) || !empty($this->AltExtended)) {
|
||||
$this->ContentType = 'multipart/alternative';
|
||||
}
|
||||
|
||||
@ -1112,6 +1127,7 @@ class PHPMailer {
|
||||
case 'alt':
|
||||
case 'alt_attachments':
|
||||
$this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
|
||||
if (!empty($this->AltExtended)) $this->AltExtended = $this->WrapText($this->AltExtended, $this->WordWrap);
|
||||
break;
|
||||
default:
|
||||
$this->Body = $this->WrapText($this->Body, $this->WordWrap);
|
||||
@ -1258,6 +1274,12 @@ class PHPMailer {
|
||||
$body .= $this->GetBoundary($this->boundary[1], '', $this->BodyContentType, ''); //is dependent on IsHTML
|
||||
$body .= $this->EncodeString($this->Body, $this->Encoding);
|
||||
$body .= $this->LE.$this->LE;
|
||||
if (!empty($this->AltExtended))
|
||||
{
|
||||
$body .= $this->GetBoundary($this->boundary[1], '', $this->AltExtendedContentType, ''); // may be set by client, defaults to text/plain
|
||||
$body .= $this->EncodeString($this->AltExtended, $this->Encoding);
|
||||
$body .= $this->LE.$this->LE;
|
||||
}
|
||||
$body .= $this->EndBoundary($this->boundary[1]);
|
||||
break;
|
||||
case 'plain':
|
||||
@ -1278,6 +1300,12 @@ class PHPMailer {
|
||||
$body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '') . $this->LE; // Create the HTML body
|
||||
$body .= $this->EncodeString($this->Body, $this->Encoding);
|
||||
$body .= $this->LE.$this->LE;
|
||||
if (!empty($this->AltExtended))
|
||||
{
|
||||
$body .= $this->GetBoundary($this->boundary[2], '', $this->AltExtendedContentType, ''); // may be set by client, defaults to text/plain
|
||||
$body .= $this->EncodeString($this->AltExtended, $this->Encoding);
|
||||
$body .= $this->LE.$this->LE;
|
||||
}
|
||||
$body .= $this->EndBoundary($this->boundary[2]);
|
||||
$body .= $this->AttachAll();
|
||||
break;
|
||||
@ -1365,10 +1393,10 @@ class PHPMailer {
|
||||
if(count($this->attachment) > 0) {
|
||||
$this->message_type = 'attachments';
|
||||
}
|
||||
if(strlen($this->AltBody) > 0 && count($this->attachment) < 1) {
|
||||
if((strlen($this->AltBody) > 0 || strlen($this->AltExtended) > 0 ) && count($this->attachment) < 1) {
|
||||
$this->message_type = 'alt';
|
||||
}
|
||||
if(strlen($this->AltBody) > 0 && count($this->attachment) > 0) {
|
||||
if((strlen($this->AltBody) > 0 || strlen($this->AltExtended) > 0 ) && count($this->attachment) > 0) {
|
||||
$this->message_type = 'alt_attachments';
|
||||
}
|
||||
}
|
||||
@ -2005,7 +2033,7 @@ class PHPMailer {
|
||||
public function getMessageHeader() {
|
||||
if(!isset($this->sentHeader)) {
|
||||
// Set whether the message is multipart/alternative
|
||||
if(!empty($this->AltBody)) $this->ContentType = "multipart/alternative";
|
||||
if(!empty($this->AltBody) || !empty($this->AltExtended)) $this->ContentType = "multipart/alternative";
|
||||
|
||||
$this->SetMessageType();
|
||||
$header = $this->CreateHeader();
|
||||
@ -2018,7 +2046,7 @@ class PHPMailer {
|
||||
public function getMessageBody() {
|
||||
if(!isset($this->sentBody)) {
|
||||
// Set whether the message is multipart/alternative
|
||||
if(!empty($this->AltBody)) $this->ContentType = "multipart/alternative";
|
||||
if(!empty($this->AltBody) || !empty($this->AltExtended)) $this->ContentType = "multipart/alternative";
|
||||
|
||||
$this->SetMessageType();
|
||||
$body = $this->CreateBody();
|
||||
|
Loading…
Reference in New Issue
Block a user