国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

thinkphp5+swoole實(shí)現(xiàn)異步郵件群發(fā)(SMTP方式)

tuniutech / 927人閱讀

摘要:圖中其他兩個(gè)文件和是郵件發(fā)送類(lèi)的核心文件,為了簡(jiǎn)化調(diào)用,抽取了出來(lái),詳細(xì)的用法和參數(shù)設(shè)置,可以參考的使用說(shuō)明注意點(diǎn)在此步驟中,我們需要注意幾點(diǎn)是你設(shè)置的郵件發(fā)送的賬號(hào)是否已經(jīng)開(kāi)啟并且找對(duì)對(duì)應(yīng)的安全協(xié)議和端口號(hào)。

1、環(huán)境說(shuō)明

阿里云centos7
thinkphp5.0.11
swoole2.0.8

2、tp實(shí)現(xiàn)郵件發(fā)送

在項(xiàng)目下建立如下的文件目錄:

其中SendMail.php是我們實(shí)際調(diào)用的發(fā)送郵件的文件。以下是主要代碼:

namespace applibraryutilsmail;
use applibraryutilsmailPhpMailer;
use applibraryutilsmailSmtp;
use thinkLog;

error_reporting(E_STRICT);
date_default_timezone_set("Asia/Shanghai");

class SendMail
{
    static function postmail($to,$subject = "",$body = ""){
        $mail = new PhpMailer();
        $mail->CharSet    = config("mail.CharSet");
        $mail->IsSMTP();
        $mail->SMTPDebug  = config("mail.SMTPDebug");
        $mail->SMTPAuth   = config("mail.SMTPAuth");
        $mail->SMTPSecure = config("mail.SMTPSecure");
        $mail->Host       = config("mail.Host");
        $mail->Port       = config("mail.Port");
        $mail->Username   = config("mail.Username");
        $mail->Password   = config("mail.Password");
        $mail->SetFrom(config("mail.From"), config("mail.Name"));
        $mail->Subject    = $subject;
        $mail->MsgHTML($body);
        $address = $to;
        $mail->AddAddress($address, "");
        if(!$mail->Send()) {
            Log::write("send to ".$to."error info:".$mail->ErrorInfo);
            return false;
        } else {
            return true;
        }
    }
}

里面的config配置項(xiàng),我們放在項(xiàng)目底下的config.php文件中,具體配置內(nèi)容如下:

 //郵箱設(shè)置
    "mail"=>[
        "CharSet"=>"UTF-8",
        "SMTPDebug"=>0,// 啟用SMTP調(diào)試功能 0關(guān)閉
        "SMTPAuth"=>true,// 啟用 SMTP 驗(yàn)證功能
        "SMTPSecure"=>"ssl",// 安全協(xié)議
        "Host"=>"smtp.163.com",// SMTP 服務(wù)器
        "Port"=>465,// SMTP服務(wù)器的端口號(hào)
        "Username"=>"**********",// SMTP服務(wù)器用戶(hù)名
        "Password"=>"**********",// SMTP服務(wù)器密碼
        "From"=>"*********@163.com",// 發(fā)件人郵箱
        "Name"=>"blue",// 發(fā)件人郵箱
    ]
2.1

這里我們只是實(shí)現(xiàn)了smtp協(xié)議發(fā)送的demo,所以在封裝的層面上沒(méi)有做到很全面,不是很靈活。圖中其他兩個(gè)文件(PhpMailer.php和Smtp.php)是Phpmailer郵件發(fā)送類(lèi)的核心文件,為了簡(jiǎn)化調(diào)用,抽取了出來(lái),詳細(xì)的用法和參數(shù)設(shè)置,可以參考gayhub的使用說(shuō)明phpmailer

2.2 注意點(diǎn)

在此步驟中,我們需要注意幾點(diǎn):1是你設(shè)置的郵件發(fā)送的賬號(hào)是否已經(jīng)開(kāi)啟SMTP并且找對(duì)對(duì)應(yīng)的安全協(xié)議和端口號(hào)。2、當(dāng)前服務(wù)器是否支持SMTP服務(wù),這邊很多時(shí)候會(huì)受一些socket函數(shù)的影響,遇到問(wèn)題的時(shí)候,我們應(yīng)該把SMTPDebug參數(shù)設(shè)置為1,然后根據(jù)debug信息去細(xì)心調(diào)試。3、發(fā)出的郵件有些會(huì)被放入垃圾箱,注意查收。

2.3 調(diào)用

建立如下的文件目錄結(jié)構(gòu):

在Index.php中調(diào)用發(fā)送郵件的方法,具體代碼如下

public function sendMail(){
        if(SendMail::postmail("937069176@qq.com","test","123")){
            echo "send success";
        }else{
            echo "send fail";
        }
    }
2.4 調(diào)用結(jié)果

我們可以在QQ郵箱的垃圾箱中找到我們剛剛發(fā)送的一封郵件

3、結(jié)合swoole實(shí)現(xiàn)異步群發(fā) 3.1安裝swoole

swoole擴(kuò)展安裝的詳細(xì)步驟官網(wǎng)上面都有,不再贅述,swoole文檔傳送門(mén)
安裝完swoole之后,建議為自己的IDE加上swoole的代碼提示,配置IDE提示swoole代碼的傳送門(mén)

3.2實(shí)現(xiàn)異步群發(fā)

我們先實(shí)現(xiàn)異步的服務(wù)端:

    /**
     * description:服務(wù)端
     */
    public function syncSend(){
        $serv = new swoole_server("0.0.0.0",8082);

        $serv->set(array("task_worker_num" => 4));

        $serv->on("receive", function($serv, $fd, $from_id, $data) {
            $task_id = $serv->task($data);
            echo "開(kāi)始投遞異步任務(wù) id=$task_id
";
        });

        $serv->on("task", function ($serv, $task_id, $from_id, $data) {
            echo "接收異步任務(wù)[id=$task_id]".PHP_EOL;
            for ($i = 0 ; $i<20;$i++){
                if(SendMail::postmail("937069176@qq.com","test",$data)){
                    echo "send".$i." success"."
";
                }else{
                    echo "send".$i." fail"."
";
                }
        }
        $serv->finish("");
        });

        $serv->on("finish", function ($serv, $task_id, $data) {
            echo "異步任務(wù)[id=$task_id]完成".PHP_EOL;
        });

        $serv->start();
    }

在服務(wù)端,我們用了一個(gè)20的loop來(lái)模擬了群發(fā),實(shí)際換成不同的email地址就可。
下面我們實(shí)現(xiàn)客戶(hù)端

    /**
     * description:客戶(hù)端
     */
    public function index()
    {
        $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
        $ret = $client->connect("127.0.0.1", 8082);
        if(empty($ret)){
            echo "error!connect to swoole_server failed";
        } else {
            $client->send("blue");//這里只是簡(jiǎn)單的實(shí)現(xiàn)了發(fā)送的內(nèi)容
        }
    }
3.3開(kāi)啟服務(wù)端

這里必須要用CLI方式,我們進(jìn)入項(xiàng)目的根目錄。
執(zhí)行

netstat -apn | grep 8082

先監(jiān)測(cè)一下8082端口是否被占用,如果占用則

kill -9 PID(進(jìn)程號(hào))

殺死進(jìn)程

然后我們執(zhí)行

php public/index.php index/index/syncSend

這條命令的作用是用cli模式來(lái)使我們的8082端口處于監(jiān)聽(tīng)狀態(tài)。且保持這個(gè)終端處于活躍狀態(tài),這樣方便我們查看發(fā)送的結(jié)果。

接著我們可以用CLI或者瀏覽器訪(fǎng)問(wèn)的方式來(lái)訪(fǎng)問(wèn)我們的客戶(hù)端

php public/index.php index/index/index

當(dāng)我們執(zhí)行一次的時(shí)候客戶(hù)端的時(shí)候,我們可以在服務(wù)端的終端看到屏幕上面出現(xiàn)如下的畫(huà)面:

說(shuō)明我們已經(jīng)正常群發(fā)了。
下面,我們就來(lái)測(cè)試異步,因?yàn)?63服務(wù)器會(huì)對(duì)IP進(jìn)行檢測(cè),如果在某個(gè)時(shí)間發(fā)送也別頻繁的話(huà),會(huì)出現(xiàn)發(fā)送失敗的情況,所以我們測(cè)試的時(shí)候,采用連續(xù)執(zhí)行4次客戶(hù)端的方式
下面是執(zhí)行的結(jié)果:


從圖中發(fā)送的順序來(lái)看,我們可以很容易的判斷,我們已經(jīng)實(shí)現(xiàn)了異步的發(fā)送。
郵箱里面也接收到了剛剛發(fā)送的郵件。

4、后記~

swoole是一種想要熟悉和熟練使用的擴(kuò)展,但是限于網(wǎng)絡(luò)編程知識(shí)的不足,所以還是要多多測(cè)試和學(xué)習(xí),demo中有不足的地方,還請(qǐng)指出QAQ

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/30630.html

相關(guān)文章

  • 利用客服消息和模板消息實(shí)現(xiàn)微信群發(fā)(突破群發(fā)接口的上限)

    摘要:此接口主要用于客服等有人工消息處理環(huán)節(jié)的功能,方便開(kāi)發(fā)者為用戶(hù)提供更加優(yōu)質(zhì)的服務(wù)。不支持廣告等營(yíng)銷(xiāo)類(lèi)消息以及其它所有可能對(duì)用戶(hù)造成騷擾的消息。 1、關(guān)于群發(fā)接口和消息接口 關(guān)于群發(fā)接口1.訂閱號(hào)每天可以群發(fā)消息一條,服務(wù)號(hào)每月(自然月)四條的群發(fā)權(quán)限。開(kāi)發(fā)者模式下,可以通過(guò)高級(jí)群發(fā)接口,實(shí)現(xiàn)更靈活的群發(fā)能力。2.注意● 對(duì)于認(rèn)證訂閱號(hào),群發(fā)接口每天可成功調(diào)用1次,此次群發(fā)可選擇發(fā)送給全...

    Gemini 評(píng)論0 收藏0
  • 如何實(shí)現(xiàn)高質(zhì)量電子郵件群發(fā)?這三點(diǎn)需要注意!

    摘要:郵件推送是摩杜云自主研發(fā)的一款簡(jiǎn)單高效的電子郵件發(fā)送服務(wù),能幫助你快速精準(zhǔn)地實(shí)現(xiàn)事務(wù)郵件通知郵件和批量郵件的發(fā)送。電子郵件群發(fā)已經(jīng)成為非常普遍的營(yíng)銷(xiāo)方式,一般來(lái)說(shuō),用這種方式來(lái)給潛在的客戶(hù)發(fā)送信息,可以取得比較好的效果。而且電子郵件的用戶(hù)數(shù)量龐大,幾乎懂得互聯(lián)網(wǎng)、懂得上網(wǎng)或者正在工作的人都會(huì)使用到電子郵件,而且全球使用電子郵件的人數(shù)早已經(jīng)超過(guò)了30億人。 這比單純的一些短視頻平臺(tái)的流量...

    youkede 評(píng)論0 收藏0
  • 電子郵件營(yíng)銷(xiāo)哪家好?摩杜云如何?

    摘要:現(xiàn)如今,網(wǎng)上有很多郵件營(yíng)銷(xiāo)服務(wù)商,而摩杜云卻是其中一家口碑不錯(cuò)的服務(wù)商,不僅便宜好用,而且還提供小時(shí)在線(xiàn)技術(shù)服務(wù)。群發(fā)數(shù)量不大,幾千或幾萬(wàn)封,也可以使用摩杜云郵件推送,專(zhuān)人監(jiān)測(cè),效果更好。近來(lái)年,隨著信息化的快速發(fā)展,電子郵件營(yíng)銷(xiāo)也火爆起來(lái)。要知道,電子郵件營(yíng)銷(xiāo)是一種覆蓋面廣,且成本低、高回報(bào)的推廣方式,對(duì)此成為了很多企業(yè)不可或缺的營(yíng)銷(xiāo)工具。那么,電子郵件營(yíng)銷(xiāo)哪家好呢?下面就讓小杜跟大家介紹...

    yck 評(píng)論0 收藏0
  • Python 發(fā)送 email 的三種方式

    摘要:本米撲博客先介紹幾個(gè)最簡(jiǎn)單的發(fā)送郵件方式記錄下,像郵件,附件等也是支持的,需要時(shí)查文檔即可。特別注意命令發(fā)送郵件,默認(rèn)用端口號(hào),由于阿里云騰訊云等封禁了端口號(hào),因此本示例需在開(kāi)通端口機(jī)器上測(cè)試執(zhí)行命令收件結(jié)果 Python發(fā)送email的三種方式,分別為使用登錄郵件服務(wù)器、使用smtp服務(wù)、調(diào)用sendmail命令來(lái)發(fā)送三種方法 本文原文自米撲博客:Python 發(fā)送 email 的三...

    kun_jian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<