public function testComposeEmailAddressesMultiFolding() { $reference = "John Doe <*****@*****.**>, Harry Doe <*****@*****.**>," . ezcMailTools::lineBreak() . " Nancy Doe <*****@*****.**>, Faith Doe <*****@*****.**>," . ezcMailTools::lineBreak() . " Gordon Doe <*****@*****.**>, debra@example.com"; $addresses = array(new ezcMailAddress('*****@*****.**', 'John Doe'), new ezcMailAddress('*****@*****.**', 'Harry Doe'), new ezcMailAddress('*****@*****.**', 'Nancy Doe'), new ezcMailAddress('*****@*****.**', 'Faith Doe'), new ezcMailAddress('*****@*****.**', 'Gordon Doe'), new ezcMailAddress('*****@*****.**')); $result = ezcMailTools::composeEmailAddresses($addresses, 76); $this->assertEquals($reference, $result); }
/** * Sends the mail $mail using the PHP mail method. * * Note that a message may not arrive at the destination even though * it was accepted for delivery. * * @throws ezcMailTransportException * if the mail was not accepted for delivery by the MTA. * @param ezcMail $mail */ public function send(ezcMail $mail) { $mail->appendExcludeHeaders(array('to', 'subject')); $headers = rtrim($mail->generateHeaders()); // rtrim removes the linebreak at the end, mail doesn't want it. if (count($mail->to) + count($mail->cc) + count($mail->bcc) < 1) { throw new ezcMailTransportException('No recipient addresses found in message header.'); } $additionalParameters = ""; if (isset($mail->returnPath)) { $additionalParameters = "-f{$mail->returnPath->email}"; } $success = mail(ezcMailTools::composeEmailAddresses($mail->to), $mail->getHeader('Subject'), $mail->generateBody(), $headers, $additionalParameters); if ($success === false) { throw new ezcMailTransportException('The email could not be sent by sendmail'); } }
/** * Returns the generated headers for the mail. * * This method is called automatically when the mail message is built. * You can re-implement this method in subclasses if you wish to set * different mail headers than ezcMail. * * @return string */ public function generateHeaders() { // set our headers first. if ($this->from !== null) { $this->setHeader("From", ezcMailTools::composeEmailAddress($this->from)); } if ($this->to !== null) { $this->setHeader("To", ezcMailTools::composeEmailAddresses($this->to)); } if (count($this->cc)) { $this->setHeader("Cc", ezcMailTools::composeEmailAddresses($this->cc)); } if (count($this->bcc)) { $this->setHeader("Bcc", ezcMailTools::composeEmailAddresses($this->bcc)); } $this->setHeader('Subject', $this->subject, $this->subjectCharset); $this->setHeader('MIME-Version', '1.0'); $this->setHeader('User-Agent', 'eZ Components'); $this->setHeader('Date', date('r')); $idhost = $this->from != null && $this->from->email != '' ? $this->from->email : 'localhost'; if (is_null($this->messageId)) { $this->setHeader('Message-Id', '<' . ezcMailTools::generateMessageId($idhost) . '>'); } else { $this->setHeader('Message-Id', $this->messageID); } // if we have a body part, include the headers of the body if (is_subclass_of($this->body, "ezcMailPart")) { return parent::generateHeaders() . $this->body->generateHeaders(); } return parent::generateHeaders(); }
<?php require_once 'tutorial_autoload.php'; $mailAddresses = array(new ezcMailAddress('*****@*****.**', 'Jøhn Doe', 'ISO-8859-1'), new ezcMailAddress('*****@*****.**', 'Jane Doe')); $addresses = '=?ISO-8859-1?B?SsO4aG4gRG9l?= <*****@*****.**>, Jane Doe <*****@*****.**'; // Convert ezcMailAddress to string representation var_dump(ezcMailTools::composeEmailAddress($mailAddresses[0])); var_dump(ezcMailTools::composeEmailAddresses($mailAddresses)); // Convert string to ezcMailAddress var_dump(ezcMailTools::parseEmailAddress($addresses)); var_dump(ezcMailTools::parseEmailAddresses($addresses)); // Validate an email address (with a regular expression, without checking for MX records) $isValid = ezcMailTools::validateEmailAddress('*****@*****.**'); // Validate an email address with MX records check. // MX record checking does not work on Windows due to the lack of getmxrr() // and checkdnsrr() PHP functions. The ezcBaseFunctionalityNotSupportedException // is thrown in this case. // set this to your mail server, it is used in a // 'HELO SMTP' command to validate against MX records ezcMailTools::$mxValidateServer = 'your.mail.server'; // set this to a mail address such as '*****@*****.**', it is used in a // 'MAIL FROM' SMTP command to validate against MX records ezcMailTools::$mxValidateAddress = '*****@*****.**'; $isValid = ezcMailTools::validateEmailAddress('*****@*****.**', true); // Create a new mail object $mail = new ezcMail(); $mail->from = $mailAddresses[1]; $mail->addTo($mailAddresses[0]); $mail->subject = "Top secret"; // Use the lineBreak() method $mail->body = new ezcMailText("Confidential" . ezcMailTools::lineBreak() . "DO NOT READ");