mail.php
来自「一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:」· PHP 代码 · 共 726 行 · 第 1/2 页
PHP
726 行
$mp->encoding = $encoding;
$mp->type = $mimeType;
$mp->disposition = $disposition;
$mp->filename = $filename;
$this->addAttachment($mp);
return $mp;
}
/**
* Return a count of message parts
*
* @return integer
*/
public function getPartCount()
{
return count($this->_parts);
}
/**
* Encode header fields
*
* Encodes header content according to RFC1522 if it contains non-printable
* characters.
*
* @param string $value
* @return string
*/
protected function _encodeHeader($value)
{
if (Zend_Mime::isPrintable($value)) {
return $value;
} else {
$quotedValue = Zend_Mime::encodeQuotedPrintable($value);
$quotedValue = str_replace(array('?', ' '), array('=3F', '=20'), $quotedValue);
return '=?' . $this->_charset . '?Q?' . $quotedValue . '?=';
}
}
/**
* Add a header to the message
*
* Adds a header to this message. If append is true and the header already
* exists, raises a flag indicating that the header should be appended.
*
* @param string $headerName
* @param string $value
* @param boolean $append
*/
protected function _storeHeader($headerName, $value, $append=false)
{
// ?? $value = strtr($value,"\r\n\t",'???');
if (isset($this->_headers[$headerName])) {
$this->_headers[$headerName][] = $value;
} else {
$this->_headers[$headerName] = array($value);
}
if ($append) {
$this->_headers[$headerName]['append'] = true;
}
}
/**
* Add a recipient
*
* @param string $email
*/
protected function _addRecipient($email, $to = false)
{
// prevent duplicates
$this->_recipients[$email] = 1;
if ($to) {
$this->_to[] = $email;
}
}
/**
* Helper function for adding a recipient and the corresponding header
*
* @param string $headerName
* @param string $name
* @param string $email
*/
protected function _addRecipientAndHeader($headerName, $name, $email)
{
$email = strtr($email,"\r\n\t",'???');
$this->_addRecipient($email, ('To' == $headerName) ? true : false);
if ($name != '') {
$name = '"' . $this->_encodeHeader($name) . '" ';
}
$this->_storeHeader($headerName, $name .'<'. $email . '>', true);
}
/**
* Adds To-header and recipient
*
* @param string $name
* @param string $email
* @return Zend_Mail Provides fluent interface
*/
public function addTo($email, $name='')
{
$this->_addRecipientAndHeader('To', $name, $email);
return $this;
}
/**
* Adds Cc-header and recipient
*
* @param string $name
* @param string $email
* @return Zend_Mail Provides fluent interface
*/
public function addCc($email, $name='')
{
$this->_addRecipientAndHeader('Cc', $name, $email);
return $this;
}
/**
* Adds Bcc recipient
*
* @param string $email
* @return Zend_Mail Provides fluent interface
*/
public function addBcc($email)
{
$this->_addRecipientAndHeader('Bcc', '', $email);
return $this;
}
/**
* Return list of recipient email addresses
*
* @return array (of strings)
*/
public function getRecipients()
{
return array_keys($this->_recipients);
}
/**
* Sets From-header and sender of the message
*
* @param string $email
* @param string $name
* @return Zend_Mail Provides fluent interface
* @throws Zend_Mail_Exception if called subsequent times
*/
public function setFrom($email, $name = '')
{
if ($this->_from === null) {
$email = strtr($email,"\r\n\t",'???');
$this->_from = $email;
$this->_storeHeader('From', $this->_encodeHeader('"'.$name.'"').' <'.$email.'>', true);
} else {
/**
* @see Zend_Mail_Exception
*/
require_once 'Zend/Mail/Exception.php';
throw new Zend_Mail_Exception('From Header set twice');
}
return $this;
}
/**
* Returns the sender of the mail
*
* @return string
*/
public function getFrom()
{
return $this->_from;
}
/**
* Sets the Return-Path header for an email
*
* @param string $email
* @return Zend_Mail Provides fluent interface
* @throws Zend_Mail_Exception if set multiple times
*/
public function setReturnPath($email)
{
if ($this->_returnPath === null) {
$email = strtr($email,"\r\n\t",'???');
$this->_returnPath = $email;
$this->_storeHeader('Return-Path', $email, false);
} else {
/**
* @see Zend_Mail_Exception
*/
require_once 'Zend/Mail/Exception.php';
throw new Zend_Mail_Exception('Return-Path Header set twice');
}
return $this;
}
/**
* Returns the current Return-Path address for the email
*
* If no Return-Path header is set, returns the value of {@link $_from}.
*
* @return string
*/
public function getReturnPath()
{
if (null !== $this->_returnPath) {
return $this->_returnPath;
}
return $this->_from;
}
/**
* Sets the subject of the message
*
* @param string $subject
* @return Zend_Mail Provides fluent interface
* @throws Zend_Mail_Exception
*/
public function setSubject($subject)
{
if ($this->_subject === null) {
$subject = strtr($subject,"\r\n\t",'???');
$this->_subject = $this->_encodeHeader($subject);
$this->_storeHeader('Subject', $this->_subject);
} else {
/**
* @see Zend_Mail_Exception
*/
require_once 'Zend/Mail/Exception.php';
throw new Zend_Mail_Exception('Subject set twice');
}
return $this;
}
/**
* Returns the encoded subject of the message
*
* @return string
*/
public function getSubject()
{
return $this->_subject;
}
/**
* Sets Date-header
*
* @param string $date
* @return Zend_Mail Provides fluent interface
* @throws Zend_Mail_Exception if called subsequent times
*/
public function setDate($date = null)
{
if ($this->_date === null) {
if ($date === null) {
$date = date('r');
} else if (is_int($date)) {
$date = date('r', $date);
} else if (is_string($date)) {
$date = strtotime($date);
if ($date === false || $date < 0) {
throw new Zend_Mail_Exception('String representations of Date Header must be ' .
'strtotime()-compatible');
}
$date = date('r', $date);
} else if ($date instanceof Zend_Date) {
$date = $date->get(Zend_Date::RFC_2822);
} else {
throw new Zend_Mail_Exception(__METHOD__ . ' only accepts UNIX timestamps, Zend_Date objects, ' .
' and strtotime()-compatible strings');
}
$this->_date = $date;
$this->_storeHeader('Date', $date);
} else {
throw new Zend_Mail_Exception('Date Header set twice');
}
return $this;
}
/**
* Returns the formatted date of the message
*
* @return string
*/
public function getDate()
{
return $this->_date;
}
/**
* Add a custom header to the message
*
* @param string $name
* @param string $value
* @param boolean $append
* @return Zend_Mail Provides fluent interface
* @throws Zend_Mail_Exception on attempts to create standard headers
*/
public function addHeader($name, $value, $append = false)
{
if (in_array(strtolower($name), array('to', 'cc', 'bcc', 'from', 'subject', 'return-path', 'date'))) {
/**
* @see Zend_Mail_Exception
*/
require_once 'Zend/Mail/Exception.php';
throw new Zend_Mail_Exception('Cannot set standard header from addHeader()');
}
$value = strtr($value,"\r\n\t",'???');
$value = $this->_encodeHeader($value);
$this->_storeHeader($name, $value, $append);
return $this;
}
/**
* Return mail headers
*
* @return void
*/
public function getHeaders()
{
return $this->_headers;
}
/**
* Sends this email using the given transport or a previously
* set DefaultTransport or the internal mail function if no
* default transport had been set.
*
* @param Zend_Mail_Transport_Abstract $transport
* @return Zend_Mail Provides fluent interface
*/
public function send($transport = null)
{
if ($transport === null) {
if (! self::$_defaultTransport instanceof Zend_Mail_Transport_Abstract) {
require_once 'Zend/Mail/Transport/Sendmail.php';
$transport = new Zend_Mail_Transport_Sendmail();
} else {
$transport = self::$_defaultTransport;
}
}
if (is_null($this->_date)) {
$this->setDate();
}
$transport->send($this);
return $this;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?