下面先简单说一下这个服务器的一些主要的数据库表:
域名表:hm_domains,这个表保存了服务器中配置的各个域名及其相关属性;
邮件账号表:hm_accounts,这个表保存了所有的邮件账号的各项信息,如所属域名、密码、邮箱大小等;
imap服务的目录表:hm_imapfolders,这个表保存了 imap 服务的各个目录。默认情况下,每建立一个邮件账户,系统都会为这个用户添加一个 imap 目录(收件箱)
这三个表就是我们自己写管理邮件账户页面时,最常用到的表。其它的表,也很简单,如果需要的话,看一下,很容易看懂。

在表 hm_accounts 中保存的密码,不同的账户是可以使用不同的加密算法来加密的。表中保存密码的字段是:accountpassword,而这个密码所使用的加密算法由后面的一个字段的值来决定,这个字段就是:accountpwencryption。当前这个字段的值决定了密码的不同加密算法,下面是其对应关系:
0 -> 用明码来保存密码,即不对密码进行加密;
1 -> 使用 Blowfish 来加密密码。据介绍,这种加密算法并不安全,和用明码保存密码的安全性相差不大;
2 -> 使用 MD5 加密算法来加密密码;
3 -> 使用 SHA256 加密算法来加密密码。这也是 hMailServer 官方推荐的加密算法
参考资料 https://www.iteye.com/blog/lqixv-833194

邮件账号表:hm_accounts
account // id
accountdomainid = '4'; // 常规-域名ID (hm_domains表中domainid值)
accountadminlevel = '0'; // 常规-管理员级别
accountaddress = '888@111.club'; // 常规-地址
accountpassword = md5('123456'); // 常规-加密后密码
accountactive = '1'; // 常规-已启用
accountisad = '0'; // 活动目录-已启用
accountaddomain = ''; // 活动目录-域
accountadusername = ''; // 活动目录-用户名
accountmaxsize = '0'; //常规-大小
accountvacationmessageon = '0'; // 自动回复-已启用
accountvacationmessage = ''; // 自动回复-文本
accountvacationsubject = ''; // 自动回复-主题
accountpwencryption ='2'; // 帐户加密方式 0 1 2 3
accountforwardenabled ='1'; //转发-已启用
accountforwardaddress = '1@111.club'; // 转发-地址
accountforwardkeeporiginal = '1'; //转发-保留原始邮件
accountenablesignature = '0'; // 签名-已启用
accountsignatureplaintext = ''; // 签名-纯文本签名
accountsignaturehtml = ''; // 签名-HTML签名
accountlastlogontime = $time; // 常规-最后登录时间
accountvacationexpires = '0'; //自动回复-自动过期启用
accountvacationexpiredate = $time; // 自动回复-自动过期日期
accountpersonfirstname = ''; //名
accountpersonlastname = ''; // 姓

imap服务的目录表:hm_imapfolders
folderid 文件夹id
folderaccountid 邮件账号id(上表中account值)
folderparentid 文件夹父ID
foldername 文件夹名
folderissubscribed 已订阅文件夹
foldercreationtime 文件夹创建时间
foldercurrentuid 邮件id

我自己需要用PHP写一个简单的添加用户接口,PHP代码如下

<?php
$servername = "127.0.0.1";
$username = "";
$password = "";
$dbname = "";

$time = date('Y-m-d h:i:s', time());

$accountdomainid = '4';                 // 常规-域名ID
$accountadminlevel = '0';            // 常规-管理员级别
$accountaddress = '888@jgdwl.cn';                //  常规-地址
$accountpassword = md5('123456');              // 常规-加密后密码
$accountactive = '1';                    // 常规-已启用
$accountisad = '0';                     //  活动目录-已启用
$accountaddomain =  '';           // 活动目录-域
$accountadusername = '';           // 活动目录-用户名
$accountmaxsize = '0';                  //常规-大小
$accountvacationmessageon = '0';     // 自动回复-已启用
$accountvacationmessage = '';         // 自动回复-文本
$accountvacationsubject = '';            // 自动回复-主题
$accountpwencryption ='2';               // 帐户加密方式  0 1 2 3 
$accountforwardenabled ='1';             //转发-已启用
$accountforwardaddress = '1@jgdwl.cn';            // 转发-地址
$accountforwardkeeporiginal = '1';       //转发-保留原始邮件
$accountenablesignature = '0';            // 签名-已启用
$accountsignatureplaintext = '';         // 签名-纯文本签名
$accountsignaturehtml = '';               // 签名-HTML签名
$accountlastlogontime = $time;               // 常规-最后登录时间    
$accountvacationexpires = '0';             //自动回复-自动过期启用
$accountvacationexpiredate = $time;        // 自动回复-自动过期日期
$accountpersonfirstname = '';             //名
$accountpersonlastname = '';             // 姓

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);

 
$sql = "INSERT INTO hm_accounts (accountdomainid, accountadminlevel, accountaddress, accountpassword, accountactive, accountisad, accountaddomain, accountadusername, accountmaxsize, accountvacationmessageon, accountvacationmessage, accountvacationsubject, accountpwencryption, accountforwardenabled, accountforwardaddress, accountforwardkeeporiginal, accountenablesignature, accountsignatureplaintext, accountsignaturehtml, accountlastlogontime, accountvacationexpires, accountvacationexpiredate, accountpersonfirstname, accountpersonlastname)
                                 VALUES('$accountdomainid', '$accountadminlevel', '$accountaddress', '$accountpassword', '$accountactive', '$accountisad', '$accountaddomain', '$accountadusername', '$accountmaxsize', '$accountvacationmessageon', '$accountvacationmessage', '$accountvacationsubject', '$accountpwencryption', '$accountforwardenabled', '$accountforwardaddress', '$accountforwardkeeporiginal', '$accountenablesignature', '$accountsignatureplaintext', '$accountsignaturehtml', '$accountlastlogontime', '$accountvacationexpires', '$accountvacationexpiredate', '$accountpersonfirstname', '$accountpersonlastname');";

if (mysqli_query($conn, $sql)) {
    echo "账号密码插入成功";
    $folderaccountid = mysqli_insert_id($conn);

$sql = "INSERT INTO hm_imapfolders (folderaccountid, folderparentid, foldername, folderissubscribed, foldercreationtime, foldercurrentuid) VALUES ('$folderaccountid', '-1', 'INBOX', '1', '$time', '0')"; 
    if (mysqli_query($conn, $sql)) {  echo "收件箱插入成功";}else{echo "Error: " . $sql . "<br>" . mysqli_error($conn);}

} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
 
mysqli_close($conn);
?>

hMailServer数据库结构以及加密方法,php操作mysql添加数据库相关推荐

  1. PHP事务数据库写法,PHP 操作 MySQL 执行数据库事务

    $mysqli=new mysqli();//实例化mysqli $mysqli->connect('localhost','root','admin','test'); if(mysqli_c ...

  2. MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

    MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库. 有关 MySQL 远程管理软件,你可以选择 ...

  3. 安全如何为数据库选择最佳加密方法

    介绍 加密是对消息或信息进行编码以便只有授权方可以看到它的过程.加密已经进行了几个世纪.例如,在第二次世界大战中,盟军使用不成文的纳瓦霍语发送加密代码,日本人无法解码. 今天,加密变得更加重要,因为我 ...

  4. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  5. 根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...

    1.SQLALchemy使用 安装 pip install sqlalchemy: SQLAlchemy是Python编程语言下的一款开源软件,是PythonSQL工具包和对象关系映射器,它为应用程序 ...

  6. c++访问数据库代码示例 occi_使用Python操作SQL Server数据库

    先说一下SQL Server 如果有条件可以使用远程连接或者TeamViewer等工具,操作带GUI的数据库管理器,实施起来可以很省心.可以直接查看结果,模板化查询甚至提示语句错误等. 如果是使用li ...

  7. 数据库优化查询的方法以及大访问量到数据库时的优化

    一.数据库优化查询的方法 1.使用索引: 应尽量避免全表扫描,首先考虑在where 以及 order by  ,group  by 涉及的列上建立索引 2.优化SQL语句: 1>通过explai ...

  8. 怎么用php操作mysql删除数据库代码_如何使用php操作mysql的增删改查?

    php操作mysql的增删改查方法:1.插入语句[insert into 数据表名(字段1,字段2,....) values("值1","值2",..)]:2. ...

  9. php mysqldb 数据库切换,Python MySQLdb模块连接操作mysql数据库实例

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

最新文章

  1. 我们距离AI编程还有多远?
  2. 算法导论之每对顶点间的最短路径
  3. 如何在window下杀死进程?
  4. python获取字符串首字母_[Python] Python 获取中文的首字母 和 全部拼音首字母
  5. python调用opencv代码_Python调用OpenCV实现图像平滑代码实例
  6. 华为和荣耀蓝牙耳机为什么那么贵?
  7. Jquery事件委托之Safari
  8. Soft Actor Critic算法论文公式详解
  9. 空洞卷积的超详细解释
  10. macOS | 提取BDrip(封装格式为mkv)中视频与音频并重新封装为mp4
  11. 关于利用rundll32执行程序的分析
  12. Windows文件系统过滤驱动开发教程-楚狂人
  13. 华硕主板Z97-A无法识别intel M.2 NVME固态硬盘的解决方案
  14. 从零開始学习制作H5应用——V5.0:懊悔机制,整理文件夹,压缩,模板化
  15. 全连接层替换为卷积层
  16. jsp计算机网络学习网站
  17. java 经纬度计算_java 实现经纬度计算
  18. 五、K3 WISE 开发插件《直接SQL报表开发新手指导 - BOM成本报表》
  19. vue前后端aes url传参解密再解base64编码
  20. Linux/Ubuntu操作系统及常用命令

热门文章

  1. picrust2功能预测-从qiime2安装到数据分析
  2. kingbase V7/V8大小写敏感问题
  3. 常用命令_LINUX三剑客之文本处理(一):分别利用awk和sed命令添加列文本
  4. iOS史上最大漏洞出现 运营商罕见发公告提醒升级
  5. [Golang]defer详解
  6. java 获取某个时间点_Java获取昨天、当天、明天的某一个时间点
  7. 线程学习--pthread--锁链及条件变量
  8. 在VUE项目中导出excel——简单使用xlsx
  9. 计算机毕业论文有必要建模吗,本科毕业论文真的有必要吗?
  10. html禁止单选如何写,单选按钮禁用Html.textbox