CodeIgniter強(qiáng)大的電子郵件類支持以下功能:
發(fā)送電子郵件不僅簡單,而且您可以隨時(shí)對其進(jìn)行配置,也可以在app / Config / Email.php文件中設(shè)置您的首選項(xiàng)。
這是一個(gè)基本示例,演示如何發(fā)送電子郵件:
$email = \Config\Services::email();
$email->setFrom('your@example.com', 'Your Name');
$email->setTo('someone@example.com');
$email->setCC('another@another-example.com');
$email->setBCC('them@their-example.com');
$email->setSubject('Email Test');
$email->setMessage('Testing the email class.');
$email->send();
有21種不同的首選項(xiàng)可用于調(diào)整電子郵件的發(fā)送方式。您可以按照此處所述手動設(shè)置它們,也可以通過存儲在配置文件中的偏好設(shè)置自動設(shè)置它們,如下所述:
通過將一組首選項(xiàng)值傳遞給電子郵件初始化方法來設(shè)置首選項(xiàng)。這是您如何設(shè)置某些首選項(xiàng)的示例:
$config['protocol'] = 'sendmail';
$config['mailPath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordWrap'] = true;
$email->initialize($config);
注解
大多數(shù)首選項(xiàng)都具有默認(rèn)值,如果您未設(shè)置它們,則將使用它們。
如果您不想使用上述方法來設(shè)置首選項(xiàng),則可以將其放入配置文件中。只需打開 app / Config / Email.php文件,然后在“電子郵件”屬性中設(shè)置您的配置。然后保存文件,它將自動使用。$email->initialize()
如果您在配置文件中設(shè)置了首選項(xiàng),則無需使用該方法。
以下是發(fā)送電子郵件時(shí)可以設(shè)置的所有首選項(xiàng)的列表。
偏愛 | 默認(rèn)值 | 選項(xiàng) | 描述 |
---|---|---|---|
userAgent | CodeIgniter | None | “用戶代理”。 |
protocol | mail, sendmail, or smtp | 郵件發(fā)送協(xié)議。 | |
mailpath | /usr/sbin/sendmail | None | Sendmail的服務(wù)器路徑。 |
SMTPHost | No Default | None | SMTP服務(wù)器地址。 |
SMTPUser | No Default | None | SMTP用戶名。 |
SMTPPass | No Default | None | SMTP密碼。 |
SMTPPort | 25 | None | SMTP端口。 |
SMTPTimeout | 5 | None | SMTP超時(shí)(以秒為單位)。 |
SMTPKeepAlive | FALSE | TRUE or FALSE (boolean) | 啟用持久的SMTP連接。 |
SMTPCrypto | No Default | tls or ssl | SMTP加密 |
wordWrap | TRUE | TRUE or FALSE (boolean) | 啟用自動換行。 |
wrapChars | 76 | 要包裝的字符數(shù)。 | |
mailType | text | text or html | 郵件類型。如果您發(fā)送HTML電子郵件,則必須將其作為完整的網(wǎng)頁發(fā)送。確保您沒有任何相對鏈接或相對圖像路徑,否則它們將不起作用。 |
charset | utf-8 | 字符集(utf-8,iso-8859-1等)。 | |
validate | TRUE | TRUE or FALSE (boolean) | 是否驗(yàn)證電子郵件地址。 |
priority | 3 | 1, 2, 3, 4, 5 | 電子郵件優(yōu)先級。1 =最高。5 =最低。3 =正常。 |
CRLF | \n | “\r\n” or “\n” or “\r” | 換行符。(使用“ \ r \ n”符合RFC 822)。 |
newline | \n | “\r\n” or “\n” or “\r” | 換行符。(使用“ \ r \ n”符合RFC 822)。). |
BCCBatchMode | FALSE | TRUE or FALSE (boolean) | 啟用密件抄送批處理模式。 |
BCCBatchSize | 200 | None | 每個(gè)密件抄送批次中的電子郵件數(shù)量。 |
DSN | FALSE | TRUE or FALSE (boolean) | 啟用來自服務(wù)器的通知消息 |
如果您啟用了自動換行(建議遵循RFC 822),并且電子郵件中的鏈接很長,則該鏈接也可能被自動換行,從而導(dǎo)致收信人無法點(diǎn)擊它。使用CodeIgniter,您可以手動覆蓋部分消息中的自動換行,如下所示:
The text of your email that
gets wrapped normally.
{unwrap}http://example.com/a_long_link_that_should_not_be_wrapped.html{/unwrap}
More text that will be
wrapped normally.
將您不想用文字包裝的物品放在以下位置:{unwrap} {/unwrap}
CodeIgniter\Email\Email
setFrom
($ from[, $name = ''[,$ returnPath = null]])
參數(shù): | $from (string) – “From” e-mail address |
---|---|
$name (string) – “From” display name | |
$returnPath (string) – Optional email address to redirect undelivered e-mail to | |
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置電子郵件地址和發(fā)送電子郵件的人的姓名:
$email->setFrom('you@example.com', 'Your Name');
您還可以設(shè)置返回路徑,以幫助重定向未送達(dá)的郵件:
$email->setFrom('you@example.com', 'Your Name', 'returned_emails@example.com');
注解
如果您已將“ smtp”配置為協(xié)議,則無法使用Return-Path。
setReplyTo
($replyto[, $name = ''])
參數(shù): | $replyto (string) – E-mail address for replies |
---|---|
$name (string) – Display name for the reply-to e-mail address | |
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置回復(fù)地址。 如果未提供信息,則使用setFrom方法中的信息。 例:
$email->setReplyTo('you@example.com', 'Your Name');
setTo
($to)
參數(shù): | $to (mixed) – Comma-delimited string or an array of e-mail addresses |
---|---|
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置收件人的電子郵件地址。 可以是一封電子郵件,逗號分隔的列表或數(shù)組:
$email->setTo('someone@example.com');
$email->setTo('one@example.com, two@example.com, three@example.com');
$email->setTo(['one@example.com', 'two@example.com', 'three@example.com']);
setCC
($cc)
參數(shù): | $cc (mixed) – Comma-delimited string or an array of e-mail addresses |
---|---|
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置抄送電子郵件地址。 就像“收件人”一樣,它可以是一封電子郵件,逗號分隔的列表或數(shù)組。
setBCC
($bcc[, $limit = ''])
參數(shù): | $bcc (mixed) – Comma-delimited string or an array of e-mail addresses |
---|---|
$limit (int) – Maximum number of e-mails to send per batch | |
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置密件抄送電子郵件地址。 就像setTo()
方法一樣,它可以是一封電子郵件,一個(gè)逗號分隔的列表或一個(gè)數(shù)組。
如果設(shè)置了$limit
,將啟用“批處理模式”,它將以批次發(fā)送電子郵件,每個(gè)批次不超過指定的$limit
。
setSubject
($subject)
參數(shù): | $subject (string) – E-mail subject line |
---|---|
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置電子郵件主題:
$email->setSubject('This is my subject');
setMessage
($body)
參數(shù): | $body (string) – E-mail message body |
---|---|
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置電子郵件正文:
$email->setMessage('This is my message');
setAltMessage
($str)
參數(shù): | $str (string) – Alternative e-mail message body |
---|---|
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
設(shè)置備用電子郵件正文:
$email->setAltMessage('This is the alternative message');
這是一個(gè)可選的消息字符串,如果您發(fā)送HTML格式的電子郵件,則可以使用該字符串。 它使您可以指定不帶HTML格式的替代消息,該消息將添加到不接受HTML電子郵件的人的標(biāo)題字符串中。 如果您未設(shè)置自己的消息,CodeIgniter將從HTML電子郵件中提取消息并剝離標(biāo)簽。
setHeader
($header, $value)
參數(shù): | $header (string) – Header name |
---|---|
$value (string) – Header value | |
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
將其他標(biāo)題附加到電子郵件:
$email->setHeader('Header1', 'Value1');
$email->setHeader('Header2', 'Value2');
clear
($clearAttachments = false)
參數(shù): | $clearAttachments (bool) – Whether or not to clear attachments |
---|---|
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
將所有電子郵件變量初始化為空狀態(tài)。 如果您循環(huán)運(yùn)行電子郵件發(fā)送方法,則允許使用此方法,以便在兩次循環(huán)之間重置數(shù)據(jù)。
foreach ($list as $name => $address)
{
$email->clear();
$email->setTo($address);
$email->setFrom('your@example.com');
$email->setSubject('Here is your info '.$name);
$email->setMessage('Hi ' . $name . ' Here is the info you requested.');
$email->send();
}
如果將參數(shù)設(shè)置為TRUE,則所有附件也會被清除:
$email->clear(true);
send
($autoClear = true)
參數(shù): | $autoClear (bool) – Whether to clear message data automatically |
---|---|
返回: | TRUE on success, FALSE on failure |
返回類型: | bool |
電子郵件發(fā)送方法。 根據(jù)成功或失敗返回布爾值TRUE或FALSE,使其可以有條件地使用:
if (! $email->send())
{
// Generate error
}
如果請求成功,此方法將自動清除所有參數(shù)。 要停止此行為,請通過FALSE:
if ($email->send(false))
{
// Parameters won't be cleared
}
注解
為了使用printDebugger()
方法,您需要避免清除電子郵件參數(shù)。
如果啟用了BCCBatchMode
,并且接收者超過BCCBatchSize
,則此方法將始終返回布爾值TRUE
。
attach
($filename[, $disposition = ''[, $newname = null[, $mime = '']]])
參數(shù): | $filename (string) – File name |
---|---|
$disposition (string) – ‘disposition’ of the attachment. Most email clients make their own decision regardless of the MIME specification used here. https://www.iana.org/assignments/cont-disp/cont-disp.xhtml | |
$newname (string) – Custom file name to use in the e-mail | |
$mime (string) – MIME type to use (useful for buffered data) | |
返回: | CodeIgniter\Email\Email instance (method chaining) |
返回類型: | CodeIgniter\Email\Email |
使您可以發(fā)送附件。 將文件路徑/名稱放在第一個(gè)參數(shù)中。 對于多個(gè)附件,請多次使用該方法。 例如:
$email->attach('/path/to/photo1.jpg');
$email->attach('/path/to/photo2.jpg');
$email->attach('/path/to/photo3.jpg');
要使用默認(rèn)處置方式(附件),請將第二個(gè)參數(shù)留空,否則請使用自定義處置方式:
$email->attach('image.jpg', 'inline');
您也可以使用以下網(wǎng)址:
$email->attach('http://example.com/filename.pdf');
如果您想使用自定義文件名,則可以使用第三個(gè)參數(shù):
$email->attach('filename.pdf', 'attachment', 'report.pdf');
如果需要使用緩沖字符串而不是實(shí)際文件,則可以將第一個(gè)參數(shù)用作緩沖區(qū),將第三個(gè)參數(shù)用作文件名,將第四個(gè)參數(shù)用作mime-type:
$email->attach($buffer, 'attachment', 'report.pdf', 'application/pdf');
setAttachmentCID
($filename)
參數(shù): | $filename (string) – Existing attachment filename |
---|---|
返回: | Attachment Content-ID or FALSE if not found |
返回類型: | string |
設(shè)置并返回附件的Content-ID,使您可以將內(nèi)嵌(圖片)附件嵌入HTML。 第一個(gè)參數(shù)必須是已經(jīng)附加的文件名。
$filename = '/img/photo1.jpg';
$email->attach($filename);
foreach ($list as $address)
{
$email->setTo($address);
$cid = $email->setAttachmentCID($filename);
$email->setMessage('<img src="cid:'. $cid .'" alt="photo1" />');
$email->send();
}
注解
必須重新創(chuàng)建每個(gè)電子郵件的Content-ID,以使其唯一。
printDebugger
($include = ['headers', 'subject', 'body'])
參數(shù): | $include (array) – Which parts of the message to print out |
---|---|
返回: | Formatted debug data |
返回類型: | string |
返回一個(gè)包含任何服務(wù)器消息,電子郵件標(biāo)題和電子郵件消息的字符串。 對調(diào)試有用。
您可以選擇指定應(yīng)打印消息的哪些部分。 有效選項(xiàng)包括:headers, subject, body。
例如:
// You need to pass FALSE while sending in order for the email data
// to not be cleared - if that happens, printDebugger() would have
// nothing to output.
$email->send(false);
// Will only print the email headers, excluding the message subject and body
$email->printDebugger(['headers']);
注解
默認(rèn)情況下,將打印所有原始數(shù)據(jù)。
更多建議: