欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 群控系统服务端开发模式-应用开发-邮件工厂结构封装

群控系统服务端开发模式-应用开发-邮件工厂结构封装

2025/2/8 15:37:31 来源:https://blog.csdn.net/m0_63603104/article/details/144268156  浏览:    关键词:群控系统服务端开发模式-应用开发-邮件工厂结构封装

        首先在系统根目录下extend文件夹下创建邮件工厂文件夹并更名叫Mail。

一、邮件发送父类

        在Mail目录下创建邮件发送父类并更名为MailSenderInterface.php,代码如下

<?php
/*** 邮件发送父类* User: 龙哥·三年风水* Date: 2024/12/5* Time: 14:22*/
namespace Mail;
interface MailSenderInterface
{/*** 单个邮件发送* User: 龙哥·三年风水* Date: 2024/12/5* Time: 14:29* @ param $emailSubject 邮件主题* @ param $emailContent 邮件内容* @ param string $emailAttachment 邮件附件* @ return mixed*/public static function send($emailSubject, $emailContent, $emailAttachment = '');
}

二、具体类实现

        在Mail目录下创建文件夹并命名为channel,然后在channel文件夹下,创建QQ邮件发送类、网易邮件发送类等,代码如下

<?php
/*** 腾讯QQ邮件发送类* User: 龙哥·三年风水* Date: 2024/12/5* Time: 15:21*/
namespace Mail\channel;
use Mail\MailSenderInterface;
class QqMailSender implements MailSenderInterface
{public function __construct($param){}/*** 单个邮件发送* User: 龙哥·三年风水* Date: 2024/12/5* Time: 14:29* @ param $emailSubject 邮件主题* @ param $emailContent 邮件内容* @ param string $emailAttachment 邮件附件* @ return mixed*/public static function send($emailSubject, $emailContent, $emailAttachment = ''){// TODO: Implement send() method.}
}

三、邮件发送类实例

        在Mail目录下创建邮件发送类实例并更名为MailSenderFactory.php,具体代码如下:

<?php
/*** 创建邮件发送类实例工厂* User: 龙哥·三年风水* Date: 2024/12/5* Time: 14:32*/
namespace Mail;
use app\model\param\Emailsms;
use Error\BaseError;
class MailSenderFactory
{protected static $instance=null;//缓存实例protected static $channel = [];//通道参数/*** 调用邮件类实例* User: 龙哥·三年风水* Date: 2024/12/5* Time: 14:49* @ param $recipient 邮箱名称*/public static function create($recipient){$res = Emailsms::dataFind(['id' => 1],'email_id');if(empty($res) || empty($res['email_id']))throw new BaseError("未设置任何邮件发送通道",50000,200);$emailIds = explode(',',$res['email_id']);$emailType = explode('@',$recipient);self::$channel['recipient'] = $recipient;switch ($emailType[1]){case "qq.com":if(!in_array(1,$emailIds))throw new BaseError("未开启QQ邮件发送通道",50000,200);self::$channel['mail_id'] = 1;break;case "163.com":if(!in_array(2,$emailIds))throw new BaseError("未开启163邮件发送通道",50000,200);self::$channel['mail_id'] = 2;break;default:self::$instance = null;self::$channel = [];throw new BaseError("未设置任何短信发送通道",50000,200);break;}return self::$instance;}
}

四、提前说明

        明天开始将完成邮件工厂类封装及测试。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com