热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php以PHP的形式异步发送电子邮件

本文由编程笔记#小编为大家整理,主要介绍了php以PHP的形式异步发送电子邮件相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了php 以PHP的形式异步发送电子邮件相关的知识,希望对你有一定的参考价值。




//This file is used to store emails in to queue and access emails from queue
/**
* Class Queue
*/
class Queue
{
/**
* Path to the saved file
* @var string
*/
protected $path;
/**
* Queue constructor.
* @param $path
*/
public function __construct($path)
{
$this->path = $path;
}
/**
* Send an item to queue
*
* @param mixed $content - content to be send
* @return mixed - number of bytes written to the queue, or false on failure
*/
public function push($content)
{
//this will create file in the path that you provided
//EX: /Applications/MAMP/htdocs/queue/5a36b3db6bd933.13845696
$file = $this->path . uniqid('', true);
$data = serialize($content);
//Writing content that you passed to the 5a36b3db6bd933.13845696 file
return file_put_contents($file, $data);
}
/**
* This function will return all the items in the email queue list
*/
public function getNextItem()
{
$fileNames = scandir($this->path);
$fileNames = array_diff($fileNames, ['.', '..']);
$fileName = array_shift($fileNames);
if ($fileName !== null) {
$file = $this->path . $fileName;
$cOntents= file_get_contents($file);
if ($contents !== false) {
$object = unserialize($contents);
if ($object !== false) {
unlink($file);
return $object;
}
}
}
}
}


//This file is used to aut load all the classes that we need in this task
{
"require": {
"phpmailer/phpmailer": "5.*"
},
"autoload": {
"classmap": [
"classes"
]
}
}


# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command_to_execute
######crontab to process emails in queue ######
7 8 * * 4 php /Applications/MAMP/htdocs/public/process-queue.php












Send an email











//This file is used to process all emails in teh queue
require dirname(__DIR__).'/vendor/autoload.php';
$dir = dirname(__DIR__) . '/queue/';
$queue = new Queue($dir);
$mail = $queue->getNextItem();
while ($mail !== null) {
$mail->isSMTP();
$mail->Host = Config::SMTP_HOST;
$mail->Port = Config::SMTP_PORT;
$mail->SMTPAuth = true;
$mail->Username = Config::SMTP_USER;
$mail->Password = Config::SMTP_PASSWORD;
$mail->SMTPSecure = 'tls';
$mail->CharSet = 'UTF-8';
if ($mail->send()) {
echo "message send \n";
} else {
echo "Mailer error" . $mail->ErrorInfo . "\n";
}
}


//This is used to send email in to queue
/**
* Start the timer
*/
$start_time = microtime(true);
/*Autoload file from phpmailer library
you can download this library from composer and our custom classes*/
require "../vendor/autoload.php";
//Enable errors to display
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//creating object for PHPMailer class in library
$mail = new PHPMailer();
try {
//configuration to send email
$mail->isSMTP();
$mail->Host = Config::SMTP_HOST;
$mail->Port = Config::SMTP_PORT;
$mail->SMTPAuth = true;
$mail->Username = Config::SMTP_USER;
$mail->Password = Config::SMTP_PASSWORD;
$mail->SMTPSecure = 'tls';
$mail->CharSet = 'UTF-8';
//Allow to display more debugging information from phpmailer
//$mail->SMTPDebug = 2;
//Send an email
$mail->setFrom('phpmailmail@gmail.com', 'gopibabu');
$mail->addAddress('gopinyca.php@gmail.com');
$mail->Subject = 'Testing PHPMailer Messages asynchronous';
$mail->Body = 'Sending email asynchronously';
/**
* Add email to queue
*/
$dir = dirname(__DIR__).'/queue/';
$queue = new Queue($dir);
$queue->push($mail);
} catch (Exception $e) {
echo 'Message could not be queued.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
$end_time = microtime(true);
$time = number_format($end_time - $start_time, 5);
/**
* Return to index.php
*/
header("Location:emailIndex.php?time=$time");
exit();


推荐阅读
  • 池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析
    池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ... [详细]
  • 本文深入探讨了 Vue.js 中异步组件的应用与优化策略。首先,文章介绍了异步组件的基本概念及其在现代前端开发中的重要性。为了确保最佳实践,建议使用 Webpack 作为模块打包工具,因为 Browserify 默认不支持异步组件的加载。接着,详细解释了异步组件的使用方法,并提供了官方文档的相关链接以供参考。此外,文章还讨论了多种优化技巧,包括代码分割、懒加载和性能调优,以提升应用的整体性能和用户体验。 ... [详细]
  • 深入解析:JavaScript中的表达式与语句有何不同
    深入解析:JavaScript中的表达式与语句有何不同 ... [详细]
  • C++ 进阶:类的内存布局与虚函数类的实现细节
    C++ 进阶:类的内存布局与虚函数类的实现细节 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 从 Java 过渡到 Ruby,不仅是一次编程语言的转换,更是一段技术进阶的旅程。本文将深入探讨两种语言在语法、生态系统和开发模式上的差异,帮助开发者顺利实现转型,并在新的环境中高效地编写高质量代码。 ... [详细]
  • 提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南
    提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 如何使用 net.sf.extjwnl.data.Word 类及其代码示例详解 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
author-avatar
程驭飞龙_619
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有