rcube_email_server_address.php 3.9 KB
<?php


/**
 * 邮件服务商,通过邮件后缀来自动确定要请求的服务商
 * @author:dc
 * @time 2022/7/22 14:10
 * Class rcube_email_server_address
 */
class rcube_email_server_address{

//    /**
//     * @var int
//     */
//    public $id = 0;
//
//    /**
//     * 邮箱后缀
//     * qq.com
//     * @var string
//     */
//    public $mail_suffix;
//
//    /**
//     * ssl://imap.qq.com
//     * @var string
//     */
//    public $imap;
//
//    /**
//     * smtp.qq.com
//     * @var string
//     */
//    public $smtp;
//
//    /**
//     * 服务商名称
//     * @var string
//     */
//    public $name;
//
//
//    private $rc;
//
//    private $db;
//
//    public static $rows;
//
    /**
     * 表
     * @var string
     */
//    public $table = 'email_server_address';


    /**
     * Object constructor
     *
     * @param int   $db
     */
//    function __construct($db = null)
//    {
//
//        if(!$db){
//            $db =   rcube::get_instance()->get_dbh();
//        }
//        // 查询数据
//        $result   =   $db->query("select * from ". $db->table_name($this->table,true) );
//
//        // 获取列表
//        $rows   =   $result->fetchAll(PDO::FETCH_ASSOC);
//
//        foreach ($rows as $row){
//            static::$rows[$row['mail_suffix']] = [
//                'name'  =>  $row['service_provider'],
//                'smtp'  =>  $row['smtp'],
//                'imap'  =>  $row['imap'],
//            ];
//        }
//
//        $rows = null;
//
//    }

    /**
     * 获取key=>val数据,
     * @param string $key
     * @param string $value
     * @return array
     * @author:dc
     * @time 2022/7/25 14:12
     */
    public static function getKeyValue($key='mail_suffix',$value='imap'){

        $db =   rcube::get_instance()->get_dbh();

        $result = $db->query("select `{$key}`,`{$value}` from ".$db->table_name('email_server_address',true));

        $key_value = [];

        foreach ($result->fetchAll(PDO::FETCH_ASSOC) as $row){
            $key_value[$row[$key]]    =   $row[$value];
        }

        return $key_value;
    }


    public static function all($db = null)
    {
        if(!$db){
            $db =   rcube::get_instance()->get_dbh();
        }
        // 查询数据
        $result   =   $db->query("select * from ". $db->table_name('email_server_address',true) );

        // 获取列表
        $rows   =   [];

        foreach ($result->fetchAll(PDO::FETCH_ASSOC) as $row){
            $rows[$row['mail_suffix']] = [
                'name'  =>  $row['service_provider'],
                'smtp'  =>  $row['smtp'],
                'imap'  =>  $row['imap'],
            ];
        }

        return $rows;
    }

    /**
     * 通过前缀获取
     * @param $mail_suffix
     * @param string $field
     * @author:dc
     * @time 2022/7/25 11:14
     * @return array|bool
     */
    public static function firstBySuffix($mail_suffix,$field='`imap`,`smtp`'){
        $db =   rcube::get_instance()->get_dbh();
        // 查询
        $result =   $db->query("select {$field} from ".$db->table_name('email_server_address',true)." where `mail_suffix` = ? limit 1",$mail_suffix);

        // 返回结果
        return  $db->fetch_assoc($result);
    }


    /**
     * 新增数据
     * @param $mail_suffix
     * @param $imap
     * @param $smtp
     * @param string $name
     * @return false|int|mixed
     * @author:dc
     * @time 2022/7/25 11:38
     */
    public static function insert($mail_suffix,$imap,$smtp,$name=' '){

        $db =   rcube::get_instance()->get_dbh();

        $table = $db->table_name('email_server_address',true);

        // 插入
        $result =   $db->query("insert into {$table} set `mail_suffix`=?,`imap`=?,`smtp`=?,`service_provider`=?",$mail_suffix,$imap,$smtp,$name);

        // 返回结果
        if($result && $db->affected_rows($result) && ($id = $db->insert_id($result))){
            return $id;
        }

        return 0;
    }





}