首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发送异步邮件?

如何发送异步邮件?
EN

Stack Overflow用户
提问于 2015-10-29 06:50:10
回答 2查看 701关注 0票数 3

将邮件发送给用户并执行代码直到位置标头将需要时间。我希望在另一个线程中运行邮件发送代码,这样定位或加载特定页面就不需要时间了。

代码语言:javascript
复制
$sql = "SELECT email FROM user_info where username = ?";

        $statement = $db->prepare($sql);
        $statement->bindParam(1, $cmtTo);
        $statement->execute();

        $row = $statement->fetch();

//        echo $row['email'];

        $mailSender = new PuzzleEmailSender();
        $body = "<html>
                    <body>
            <h2 style=\"font-weight:bold;font-size:24px;font-family:Helvetica,Arial,sans-serif;line-height:26px;color:#999;margin:0\"><img class=\"navbarimg\"  src=\"" alt=\"/></h2><br>
                            <div style=\"font:normal 14px Helvetica,Arial,sans-serif;line-height:19px;color:#333\">
                <p>Hi, <strong>" . $cmtTo . "</strong> </p>
                                <p><strong>" . $cmtBy . "</strong> expressed comment on your puzzle answer</strong></p>
                <p><a style=\"text-decoration:underline;color:#00aff0;font-weight:bold\" href='" "' target=\"_blank\">Click on the link to check</a></p>                                
                <p>Team,</p>
                <p style=\"font-weight:bold;font-size:15px;line-height:24px;font-family:Arial,Helvetica,sans-serif;color:#666;margin:0\">
                " "</p></div>
                            </div>
                    </body>
        </html>";

        $subject = "Comment On Your Answer";

        $mailSender->sendQueryEmail($row['email'], "", $body, $subject, "", false);

        header("Location: puzzleDisplay");
EN

回答 2

Stack Overflow用户

发布于 2016-04-05 13:04:02

创建表:mail_queue

字段:id、email、subject、body

改变:

代码语言:javascript
复制
$mailSender->sendQueryEmail($row['email'], "", $body, $subject, "", false);

代码语言:javascript
复制
$sql = "INSERT INTO mail_queue SET email = ?, body = ?, subject = ?"
$statement = $db->prepare($sql);
$statement->bindParam(1, $row['email']);
$statement->bindParam(2, $body);
$statement->bindParam(3, $subject);
$statement->execute();

创建脚本:mail_queue.php,它将提取所有电子邮件并进行邮件发送,然后删除发送后的记录

放到crontab:* ** php mail_queue.php

票数 1
EN

Stack Overflow用户

发布于 2016-04-05 13:08:11

你可以在后台发送邮件。将邮件任务添加到某个队列中,然后定期执行队列。

可以通过多种方式实现这些目标:

  • 您可以使用持久存储队列。就像你把邮件存储到DB里一样。然后,cron的脚本将检查未发送的邮件,并逐个发送。
  • 您可以使用gearman-job-server。将邮件从主脚本中放入作业服务器中。然后用gearman worker脚本编写发送电子邮件的代码。
  • 您可以使用托管的队列服务解决方案,如:iron.io。Laravel使用铁api。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33407647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档