日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

介紹一個(gè)PHP郵件發(fā)送庫(kù):Swiftmailer

時(shí)間:2017-11-28 10:34:29 類(lèi)型:PHP
字號(hào):    

     南昌雅騰教育今天介紹一個(gè)PHP郵件發(fā)送庫(kù):Swiftmailer,它是一個(gè)類(lèi)似PHPMailer郵件發(fā)送組件,它也支持HTML格式、附件發(fā)送,但它發(fā)送效率相當(dāng)高,成功率也非常高,很多PHP框架都集成了Swiftmailer。

Swiftmailer需要PHP 7.0或更高版本,(proc_*函數(shù)可用。)

安裝

我們使用Composer來(lái)安裝Swiftmailer:

composer require "swiftmailer/swiftmailer:^6.0" 

基本使用

只需填寫(xiě)郵箱服務(wù)器相關(guān)配置,然后填寫(xiě)郵件標(biāo)題、發(fā)送對(duì)象和郵件內(nèi)容,運(yùn)行即可完成發(fā)送郵件任務(wù):

require_once '/path/to/vendor/autoload.php'; 
  $transport = (new Swift_SmtpTransport('smtp.163.com'25)) // 郵箱服務(wù)器 
  ->setUsername('your username')  // 郵箱用戶(hù)名 
  ->setPassword('your password')   // 郵箱密碼,有的郵件服務(wù)器是授權(quán)碼 
; 
  $mailer = new Swift_Mailer($transport); 
  $message = (new Swift_Message('Wonderful Subject')) // 郵件標(biāo)題 
  ->setFrom(['[email protected]' => 'John Doe']) // 發(fā)送者 
  ->setTo(['[email protected]''[email protected]' => 'A name']) //發(fā)送對(duì)象,數(shù)組形式支持多個(gè) 
  ->setBody('Here is the message itself'//郵件內(nèi)容 
  ; 
  $result = $mailer->send($message); 

如果發(fā)送成功,會(huì)返回$result的值為1,即true。

高級(jí)應(yīng)用

發(fā)送郵件時(shí)最關(guān)鍵的是創(chuàng)建消息體,在Swift Mailer中創(chuàng)建消息是通過(guò)使用庫(kù)提供的各種MIME實(shí)體完成的,因此我們不需要花太多時(shí)間去了解如何處理MIME實(shí)體,只需拿來(lái)使用即可。

Swift Mailer提供了創(chuàng)建郵件消息的一系列方法,下面列舉我們常用到的一些方法:

setSubject():郵件主題

setFrom():發(fā)件人地址,數(shù)組形式,可以是多個(gè)發(fā)件人

setTo():收件人地址,數(shù)組形式,可以是多個(gè)收件人

setBody():郵件內(nèi)容

addPart():郵件內(nèi)容指定輸出類(lèi)型,支持html內(nèi)容輸出

attach():添加附件

setCc():抄送,支持多個(gè)郵箱地址

setBcc():密送,支持多個(gè)郵箱地址

常見(jiàn)問(wèn)題

1. 報(bào)錯(cuò)信息:Fatal error: Uncaught Swift_TransportException: Failed to authenticate on SMTP server with username xxx...

很顯然是郵件服務(wù)的賬號(hào)密碼不正確導(dǎo)致驗(yàn)證不能通過(guò)。目前163免費(fèi)郵和QQ郵箱等提供給第三方客戶(hù)端使用的SMTP/POP等服務(wù)需要設(shè)置一個(gè)授權(quán)碼,具體可以到郵箱里設(shè)置。然后將正確的郵箱賬號(hào)和授權(quán)碼配置到Swift Mailer中即可。

2. 報(bào)錯(cuò)信息:PHP Fatal error: Uncaught Swift_TransportException: Connection could not be established with host smtp.163.com

不能連接上郵件服務(wù)器。如果出現(xiàn)這個(gè)情況,建議嘗試改成ssl協(xié)議。筆者在本地使用官方的25端口發(fā)送郵件一切正常,到放到公網(wǎng)服務(wù)器上就提示如上錯(cuò)誤信息了,折騰了好久,改下協(xié)議和端口,成功了:

$transport = (new Swift_SmtpTransport('ssl://smtp.163.com'465))