用RabbitMQ发邮件(结合PHPMailer)

来源:互联网 发布:mac跳过创建电脑账户 编辑:程序博客网 时间:2024/05/28 23:20

将发邮件的mailer.php封装

<?phpuse PHPMailer\PHPMailer\PHPMailer;include_once "phpMailer/PHPMailer.php";include_once "phpMailer/Exception.php";include_once "phpMailer/SMTP.php";class Mailer{    public $username="123456789@qq.com";//发送的邮箱    public $password="*************";//qq邮箱授权码    public function sendMail($title,$content,$address)    {        $mail = new PHPMailer();        $mail->SMTPDebug = 1;        $mail->isSMTP();        $mail->SMTPAuth=true;        $mail->Host = 'smtp.qq.com';        $mail->SMTPSecure = 'ssl';        $mail->Port = 465;        $mail->CharSet = 'UTF-8';        $mail->FromName = '啦啦啦啦一朵花';        $mail->Username =$this->username;        $mail->Password =$this->password;        $mail->From=$this->username;        $mail->isHTML(true);                $mail->addAddress($address,"aaa");        $mail->Subject = $title;        $mail->Body = $content;        $status = $mail->send();        if($status) {                return 1;            }else{                return 0;            }    }}// $mail->ErrorInfo();?>
在RabbitMQ的send.php写:
<?php   $exchangeName = 'demo'; $queueName = 'hello'; $routeKey = 'hello'; $message = 'Hello World!'; $connection = new AMQPConnection(array('host' => '127.0.0.1', 'port' => '5672', 'vhost' => '/', 'login' => 'guest', 'password' => 'guest')); $connection->connect() or die("Cannot connect to the broker!\n");   try {         $channel = new AMQPChannel($connection);         $exchange = new AMQPExchange($channel);         $exchange->setName($exchangeName);         $queue = new AMQPQueue($channel);         $queue->setName($queueName);         $arr=[            [             "title"=>"I miss you really",         "content"=>"红红火火恍恍惚惚",         "address"=>"234567891@qq.com"             ],            [              "title"=>"I miss you really",         "content"=>"红红火火恍恍惚惚",         "address"=>"23344556677@qq.com"            ]         ];         foreach ($arr as $v){         $res=$exchange->publish(json_encode($v), $routeKey);         var_dump($res);         }              } catch (AMQPConnectionException $e) {         var_dump($e);         exit(); } 
另一个是RabbitMQ下的receive.php

<?php $exchangeName = 'demo';$queueName = 'hello';$routeKey = 'hello'; $connection = new AMQPConnection(array('host' => '127.0.0.1', 'port' => '5672', 'vhost' => '/', 'login' => 'guest', 'password' => 'guest'));$connection->connect() or die("Cannot connect to the broker!\n");$channel = new AMQPChannel($connection);$exchange = new AMQPExchange($channel);$exchange->setName($exchangeName);$exchange->setType(AMQP_EX_TYPE_DIRECT);$exchange->declareExchange();$queue = new AMQPQueue($channel);$queue->setName($queueName);$queue->declareQueue();$queue->bind($exchangeName, $routeKey); var_dump('[*] Waiting for messages. To exit press CTRL+C');while (TRUE) {        $queue->consume('callback');}$connection->disconnect(); function callback($envelope, $queue) {        $msg = $envelope->getBody();        $msg = json_decode($msg,true);        include_once 'mailer.php';        $mail = new Mailer();        $res=$mail->sendMail($msg["title"],$msg["content"],$msg["address"]);        var_dump($res);}


打开cmd.exe(最好用管理员身份运行)先运行php send.php,然后运行php receive.php,如果receive.php不报错,则发送邮件成功

原创粉丝点击