国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

php實(shí)現(xiàn)發(fā)送電子郵件功能,使用PHPMailer

PHPMailer 可能是最流行的用于發(fā)送電子郵件的開(kāi)源 PHP 庫(kù)。它于 2001 年首次發(fā)布,從那時(shí)起,除了Swiftmailer等還有一部分人喜歡使用之外,PHPMailer已成為 PHP 開(kāi)發(fā)人員最喜歡的發(fā)送電子郵件的方式的php庫(kù)。

在本文中,也順便討論以下為什么應(yīng)該使用 PHPMailer 而不是 PHP 的mail()函數(shù),并且我們將展示一些有關(guān)如何使用該庫(kù)的代碼示例。

PHPMailer 是 PHP mail() 函數(shù)的替代品嗎?

在大多數(shù)情況下,PHPMailer 只是內(nèi)置 PHP mail()函數(shù)的替代品,但在許多其他情況下,該mail()函數(shù)根本不夠靈活,無(wú)法實(shí)現(xiàn)您所需要的功能。

首先,PHPMailer提供了面向?qū)ο蟮慕涌?,而PHPMailermail()并不是面向?qū)ο蟮摹?headersPHP 開(kāi)發(fā)人員通常討厭在使用該函數(shù)發(fā)送電子郵件時(shí)創(chuàng)建字符串mail(),因?yàn)樗鼈冃枰罅哭D(zhuǎn)義。PHPMailer 使這變得輕而易舉。開(kāi)發(fā)人員在使用該功能時(shí)還需要編寫臟代碼(轉(zhuǎn)義字符、編碼和格式)來(lái)發(fā)送附件和基于 HTML 的電子郵件mail(),而 PHPMailer 使這一切變得輕松。

此外,該mail()功能需要本地郵件服務(wù)器來(lái)發(fā)送電子郵件,這并不總是很容易設(shè)置。如果您有身份驗(yàn)證,PHPMailer 可以使用非本地郵件服務(wù)器 (SMTP)。

其他優(yōu)點(diǎn)包括:

  • 當(dāng)發(fā)送電子郵件失敗時(shí),它可以打印40多種語(yǔ)言的各種錯(cuò)誤消息。

  • 它集成了 SMTP 協(xié)議支持以及基于 SSL 和 TLS 的身份驗(yàn)證。

  • 它可以為非 HTML 電子郵件客戶端發(fā)送替代的純文本版本的電子郵件。

  • 它有一個(gè)非?;钴S的開(kāi)發(fā)者社區(qū),可以保證其安全和最新。

PHPMailer 還被流行的 PHP 內(nèi)容管理系統(tǒng)(例如 WordPress、Drupal 和 Joomla)使用。

安裝 PHPMailer

您可以使用 Composer 安裝 PHPMailer :

composer require phpmailer/phpmailer

如果你沒(méi)有composer 可以通過(guò)以下鏈接直接下載源代碼使用:

https://github.com/PHPMailer/PHPMailer

使用 PHPMailer 從本地 Web 服務(wù)器發(fā)送電子郵件

下面是使用 PHPMailer 從本地 Web 服務(wù)器發(fā)送電子郵件的最簡(jiǎn)單示例:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

//PHPMailer對(duì)象
$mail = new PHPMailer(true); //構(gòu)造函數(shù)中的參數(shù) true 啟用異常

//來(lái)自電子郵件地址和姓名
$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";

//地址和姓名
$mail->addAddress("recepient1@example.com", "Recepient Name");
$mail->addAddress("recepient1@example.com"); //Recipient name is optional

//收件人要回復(fù)的地址
$mail->addReplyTo("reply@yourdomain.com", "Reply");

//抄送和密件抄送
$mail->addCC("cc@example.com");
$mail->addBCC("bcc@example.com");

//發(fā)送 HTML 或純文本電子郵件
$mail->isHTML(true);

$mail->Subject = "主題文本";
$mail->Body = "<i>HTML 格式的郵件正文</i>";
$mail->AltBody = "這是電子郵件內(nèi)容的純文本版本";

try {
    $mail->send();
    echo "消息發(fā)送成功";
} catch (Exception $e) {
    echo "郵件錯(cuò)誤:" . $mail->ErrorInfo;
}

PHP 文件中的代碼和注釋應(yīng)該足夠清晰,能夠解釋所發(fā)生的一切;您可以看到我們?cè)谀睦镌O(shè)置郵件主題、發(fā)件人電子郵件地址、收件人電子郵件地址、HTML 郵件正文以及處理錯(cuò)誤。

發(fā)送帶有附件的電子郵件

以下是如何使用 PHPMailer 發(fā)送帶有附件的電子郵件的示例:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

$mail = new PHPMailer;

$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";

$mail->addAddress("recipient1@example.com", "Recipient Name");

//提供文件路徑和附件名稱
$mail->addAttachment("file.txt", "File.txt");        
$mail->addAttachment("images/profile.png"); //文件名可選

$mail->isHTML(true);

$mail->Subject = "主題文本";
$mail->Body = "<i>HTML 格式的郵件正文</i>";
$mail->AltBody = "這是電子郵件內(nèi)容的純文本版本";

try {
    $mail->send();
    echo "Message has been sent successfully";
} catch (Exception $e) {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

在這里,我們附加兩個(gè)文件 - file.txt,它位于與腳本相同的目錄中,以及images/profile.png,它位于images腳本目錄的目錄中。

要將附件添加到電子郵件中,我們只需addAttachment通過(guò)傳遞文件路徑作為參數(shù)來(lái)調(diào)用 PHPMailer 對(duì)象的函數(shù)。為了附加多個(gè)文件,我們需要多次調(diào)用它。

故障排除

在我們的兩個(gè)示例中,我們使用 PHPMailer 的Exception 類進(jìn)行調(diào)試(https://github.com/PHPMailer/PHPMailer/blob/master/src/Exception.php),因此拋出的任何錯(cuò)誤都將幫助我們調(diào)試可能發(fā)生的任何問(wèn)題。我們還在PHPMailer 構(gòu)造函數(shù)true中添加了參數(shù)(https://github.com/PHPMailer/PHPMailer/blob/master/src/PHPMailer.php#L819),以輸出更高級(jí)別、更具描述性的異常。

根據(jù)我們使用的系統(tǒng),我們最??吹降腻e(cuò)誤可能與mail()在后臺(tái)運(yùn)行該函數(shù)有關(guān):

郵件程序錯(cuò)誤:無(wú)法實(shí)例化郵件功能。

如果我們需要有關(guān)錯(cuò)誤的更多詳細(xì)信息,我們還可以在 catch 子句中添加如下內(nèi)容:

print_r(error_get_last());

通常,郵件功能的問(wèn)題與缺少郵件服務(wù)器設(shè)置有關(guān),在這種情況下,該error_get_last功能將返回如下內(nèi)容:

Array (
    [type] => 2
    [message] => mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
    [file] => OUR_PATH \vendor\phpmailer\phpmailer\src\PHPMailer.php
    [line] => 863
)

這是我們最常遇到的問(wèn)題,使用 SMTP 就可以輕松解決。

顯示本地化錯(cuò)誤消息

$mail->ErrorInfo可以返回 43 種不同語(yǔ)言的錯(cuò)誤消息。

要以不同的語(yǔ)言顯示錯(cuò)誤消息,請(qǐng)將language目錄從 PHPMailer 的源代碼復(fù)制到項(xiàng)目目錄。

例如,要以俄語(yǔ)返回錯(cuò)誤消息,請(qǐng)使用以下方法調(diào)用將 PHPMailer 對(duì)象設(shè)置為俄語(yǔ):

$mail->setLanguage("ru");

您還可以將自己的語(yǔ)言文件添加到該language目錄中。

使用 SMTP

您可以使用其他主機(jī)的郵件服務(wù)器發(fā)送電子郵件,但為此您首先需要進(jìn)行身份驗(yàn)證。例如,要從 Gmail 的郵件服務(wù)器發(fā)送電子郵件,您需要擁有 Gmail 帳戶。

SMTP 是郵件客戶端用來(lái)向郵件服務(wù)器發(fā)送電子郵件發(fā)送請(qǐng)求的協(xié)議。郵件服務(wù)器驗(yàn)證電子郵件后,會(huì)將其發(fā)送到目標(biāo)郵件服務(wù)器。

以下是從您所在域的 Gmail 郵件服務(wù)器發(fā)送電子郵件的示例。您不需要本地服務(wù)器來(lái)運(yùn)行代碼。我們將使用 SMTP 協(xié)議:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

$mail = new PHPMailer(true);

//啟用SMTP調(diào)試。
$mail->SMTPDebug = 3;                              
//設(shè)置PHPMailer使用SMTP。
$mail->isSMTP();            
//設(shè)置SMTP主機(jī)名                       
$mail->Host = "smtp.gmail.com";
//如果 SMTP 主機(jī)需要身份驗(yàn)證才能發(fā)送電子郵件,則將此設(shè)置為
$mail->SMTPAuth = true;                          
//提供用戶名和密碼 
$mail->Username = "name@gmail.com";                
$mail->Password = "super_secret_password";                          
//如果SMTP需要TLS加密則設(shè)置它
$mail->SMTPSecure = "tls";                          
//設(shè)置要連接的TCP端口
$mail->Port = 587;                                  

$mail->From = "name@gmail.com";
$mail->FromName = "Full Name";

$mail->addAddress("name@example.com", "Recepient Name");

$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

try {
    $mail->send();
    echo "Message has been sent successfully";
} catch (Exception $e) {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

Gmail 需要通過(guò) SMTP 進(jìn)行 TLS 加密,因此我們進(jìn)行了相應(yīng)的設(shè)置。在通過(guò) SMTP 發(fā)送之前,您需要查明主機(jī)名、端口號(hào)、加密類型(如果需要),如果需要身份驗(yàn)證,您還需要用戶名和密碼。請(qǐng)注意,在 Gmail 上啟用雙因素身份驗(yàn)證將不允許您通過(guò)用戶名/密碼使用其 SMTP。相反,將需要額外的配置(http://webapps.stackexchange.com/questions/31297/gmail-rejects-smtp-password-with-2-factor-authentication)

與本地郵件相比,使用遠(yuǎn)程 SMTP 的一大優(yōu)勢(shì)是,如果您使用 PHP 的mail()功能發(fā)送電子郵件,并將from地址域設(shè)置為本地域名(服務(wù)器名稱)以外的任何內(nèi)容,那么收件人的電子郵件服務(wù)器的攻擊過(guò)濾器將對(duì)其進(jìn)行標(biāo)記作為垃圾郵件。例如,如果您從具有實(shí)際主機(jī)名example.com且from地址name@gmail.com為 的name@yahoo.com服務(wù)器發(fā)送一封電子郵件,則雅虎的服務(wù)器會(huì)將其標(biāo)記為垃圾郵件或向用戶顯示一條消息,要求用戶不要信任該電子郵件,因?yàn)樵撪]件的來(lái)源是,但example.com它本身卻存在仿佛來(lái)自gmail.com。盡管您擁有name@gmail.com,但雅虎無(wú)法發(fā)現(xiàn)這一點(diǎn)。

使用 POP3 檢索電子郵件

PHPMailer 還允許POP-before-SMTP驗(yàn)證來(lái)發(fā)送電子郵件(http://en.wikipedia.org/wiki/POP_before_SMTP)。換句話說(shuō),您可以使用 POP 進(jìn)行身份驗(yàn)證并使用 SMTP 發(fā)送電子郵件。遺憾的是,PHPMailer 不支持使用 POP3 協(xié)議從郵件服務(wù)器檢索電子郵件。它僅限于發(fā)送電子郵件。

結(jié)論

如果您是一名 PHP 開(kāi)發(fā)人員,那么幾乎不可能避免以編程方式發(fā)送電子郵件。雖然您可能會(huì)選擇 Mandrill 或 SendGrid 等第三方服務(wù),但有時(shí)這并不是一個(gè)選擇,而滾動(dòng)您自己的電子郵件發(fā)送庫(kù)則更是如此。這就是 PHPMailer 及其替代品(Zend Mail、Swift Mailer 等)的用武之地。

您可以在存儲(chǔ)庫(kù) wiki或官方文檔中了解該庫(kù)的 API 。

  • 存儲(chǔ)庫(kù) wiki:https://github.com/PHPMailer/PHPMailer/wiki

  • 官方文檔:http://phpmailer.github.io/PHPMailer/文章來(lái)源地址http://www.zghlxwxcb.cn/article/401.html

到此這篇關(guān)于php實(shí)現(xiàn)發(fā)送電子郵件功能,使用PHPMailer的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/401.html

如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系站長(zhǎng)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • PHP 使用ThinkPHP實(shí)現(xiàn)電子郵件發(fā)送示例

    PHP 使用ThinkPHP實(shí)現(xiàn)電子郵件發(fā)送示例

    在我們很多的程序中都需要發(fā)送郵件去提示用戶一些相關(guān)信息,應(yīng)用的范圍還是很廣的,比如:登錄驗(yàn)證需要驗(yàn)證碼,后臺(tái)管理系統(tǒng)中有變更需要發(fā)送郵箱提示等,而且郵件的發(fā)送相較于短信發(fā)送成本更低,是 免費(fèi) 的??! 那么要實(shí)現(xiàn)郵件發(fā)送需要做以下操作: 我這邊使用的

    2024年02月13日
    瀏覽(24)
  • 使用Python實(shí)現(xiàn)發(fā)送Email電子郵件【第19篇—python發(fā)郵件】

    使用Python實(shí)現(xiàn)發(fā)送Email電子郵件【第19篇—python發(fā)郵件】

    導(dǎo)入必要的模塊 : 導(dǎo)入 smtplib 用于處理 SMTP 功能的模塊,以及從 email 模塊導(dǎo)入構(gòu)建電子郵件消息所需的各個(gè)組件。 定義 send_email 函數(shù) : 創(chuàng)建一個(gè)名為 send_email 的函數(shù),該函數(shù)接受 SMTP 服務(wù)器詳細(xì)信息、發(fā)件人和收件人信息、主題、內(nèi)容和附件等參數(shù)。 格式化發(fā)件人地址

    2024年02月03日
    瀏覽(28)
  • 網(wǎng)工應(yīng)用層:電子郵件Email、SMTP協(xié)議與使用Telnet發(fā)送電子郵件

    網(wǎng)工應(yīng)用層:電子郵件Email、SMTP協(xié)議與使用Telnet發(fā)送電子郵件

    參考資料: https://www.bilibili.com/video/BV1c4411d7jb?p=72vd_source=e66dd25b0246f28e772d75f11c80f03c 湖科大的高軍老師做的計(jì)算機(jī)網(wǎng)絡(luò)課,去年選修的計(jì)網(wǎng)全靠高老師,生動(dòng),舉例豐富,配套實(shí)驗(yàn)課,無(wú)廢話純干貨,單推一波! 電子郵件(E-mail)是一種用電子手段提供信息交換的通信方式,是

    2024年02月14日
    瀏覽(36)
  • 一篇文章帶你了解Java發(fā)送郵件:使用JavaMail API發(fā)送電子郵件的注意事項(xiàng)、發(fā)送附件等

    一篇文章帶你了解Java發(fā)送郵件:使用JavaMail API發(fā)送電子郵件的注意事項(xiàng)、發(fā)送附件等

    作者:Stevedash 發(fā)表于:2023年8月13日 15點(diǎn)48分 來(lái)源:Java 發(fā)送郵件 | 菜鳥(niǎo)教程 (runoob.com) 電子郵件在現(xiàn)代通信中扮演著至關(guān)重要的角色,而在Java編程中,我們可以利用JavaMail API來(lái)方便地實(shí)現(xiàn)發(fā)送電子郵件的功能。本篇博客將向您介紹如何使用JavaMail API來(lái)發(fā)送電子郵件,以及一些

    2024年02月13日
    瀏覽(54)
  • Python發(fā)送電子郵件及圖像辦公文檔處理

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3章,1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開(kāi)發(fā)。加油吧!卷起來(lái)! 全部文章請(qǐng)?jiān)L問(wèn)專欄:《Python全棧教程(0基礎(chǔ)》

    2024年02月13日
    瀏覽(28)
  • 基于 ESP32 通過(guò) SMTP 服務(wù)器 來(lái)發(fā)送電子郵件信息

    基于 ESP32 通過(guò) SMTP 服務(wù)器 來(lái)發(fā)送電子郵件信息

    電子郵件在全球范圍內(nèi)被用作數(shù)字通信的重要組成部分。電子郵件主要用于官方通信目的,因?yàn)樗罘奖?、成本效益高、保存記錄、覆蓋全球且環(huán)保。電子郵件是一種非??旖莸耐ㄐ欧绞?,只是您需要穩(wěn)定的互聯(lián)網(wǎng)連接。 在這個(gè)項(xiàng)目中,我們將使用ESP32開(kāi)發(fā)板發(fā)送電子郵件(

    2024年02月07日
    瀏覽(132)
  • Python辦公自動(dòng)化 -- Python發(fā)送電子郵件和Outlook的集成

    Python辦公?動(dòng)化是利?Python編程語(yǔ)?來(lái)創(chuàng)建腳本和程序,以簡(jiǎn)化、加速和?動(dòng)化?常辦公任務(wù)和?作流程的過(guò)程。它基于Python的強(qiáng)?功能和豐富的第三?庫(kù),使得能夠處理各種辦公任務(wù),如?檔處理、數(shù)據(jù)分析、電?郵件管理、?絡(luò)通信等等。 要使?Python發(fā)送電?郵件,可以

    2024年02月20日
    瀏覽(18)
  • 一個(gè)月學(xué)通Python(十二):Python發(fā)送電子郵件及圖像辦公文檔處理

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3章,1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開(kāi)發(fā)。加油吧!卷起來(lái)! 全部文章請(qǐng)?jiān)L問(wèn)專欄:《Python全棧教程(0基礎(chǔ)》

    2024年02月13日
    瀏覽(33)
  • Python 自動(dòng)化指南(繁瑣工作自動(dòng)化)第二版:十八、發(fā)送電子郵件和短信

    Python 自動(dòng)化指南(繁瑣工作自動(dòng)化)第二版:十八、發(fā)送電子郵件和短信

    原文:https://automatetheboringstuff.com/2e/chapter18/ 檢查和回復(fù)電子郵件是一項(xiàng)巨大的時(shí)間消耗。當(dāng)然,你不能只寫一個(gè)程序來(lái)幫你處理所有的郵件,因?yàn)槊糠忄]件都需要它自己的回應(yīng)。但是,一旦你知道如何編寫可以發(fā)送和接收電子郵件的程序,你仍然可以自動(dòng)完成大量與電子郵件

    2023年04月08日
    瀏覽(97)
  • ASP.NET基于cs的電子郵件簡(jiǎn)單收發(fā)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(源代碼+論文)

    電子郵件作為互聯(lián)網(wǎng)中交換信息廣泛的通信工具之一,如今都已被廣大用戶接受。 早期的電子郵件只是從一個(gè)計(jì)算機(jī)終端向另外一個(gè)計(jì)算機(jī)終端傳送文本信息,而現(xiàn)在的電子郵件不僅可以發(fā)送文本信息,還可以傳送聲音、圖片、文檔等多種信息。很多郵件郵件客戶端軟件不斷

    2024年02月08日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包