如何通过WHM或cPanel API管理单个cPanel邮件账户的联系邮箱?
如何通过WHM或cPanel API管理单个cPanel邮件账户的联系邮箱?
兄弟,我完全理解你的痛点——这个功能确实藏得有点深,当初我找的时候也绕了不少弯路。你提到的UserManager::update_contact_info确实是针对整个cPanel主账户的,不是单个邮件账户的联系邮箱。别着急,其实cPanel提供了专门的API端点来处理单个邮件账户的联系邮箱,只是需要用对层级的API。
一、获取单个邮件账户的联系邮箱
你需要通过WHM API调用cPanel级别的Email::popsettings函数(属于cPanel API 2),因为单个邮件账户的配置归属于具体的cPanel账户,得通过WHM的cpanel API代理调用这个函数。
举个curl调用的例子(你可以根据自己的开发工具调整,比如用PHP/Perl的WHM API库):
curl -X POST https://你的WHM服务器地址:2087/json-api/cpanel \ -u "WHM用户名:WHM密码" \ -d "cpanel_jsonapi_user=目标cPanel账户名" \ -d "cpanel_jsonapi_apiversion=2" \ -d "cpanel_jsonapi_module=Email" \ -d "cpanel_jsonapi_func=popsettings" \ -d "email=要查询的邮箱@你的主域名.com"
这个调用会返回该邮件账户的详细配置,其中的contactemail字段就是你在cPanel用户管理器里看到的联系邮箱。
二、更新单个邮件账户的联系邮箱
同样用WHM API代理调用cPanel API 2的Email::setpopsettings函数,指定要更新的邮箱和新的联系邮箱地址即可:
curl -X POST https://你的WHM服务器地址:2087/json-api/cpanel \ -u "WHM用户名:WHM密码" \ -d "cpanel_jsonapi_user=目标cPanel账户名" \ -d "cpanel_jsonapi_apiversion=2" \ -d "cpanel_jsonapi_module=Email" \ -d "cpanel_jsonapi_func=setpopsettings" \ -d "email=要更新的邮箱@你的主域名.com" \ -d "contactemail=新的联系邮箱地址@xxx.com"
执行成功后,这个邮件账户的联系邮箱就会被更新,用户之后就能正常收到密码重置通知了。
一些实用提醒
- 权限要求:你的WHM账户需要有足够权限,要么是root账户,要么是拥有目标cPanel账户管理权限的经销商账户。
- 认证方式:除了用户名+密码,更推荐用WHM的API Token做认证,安全性更高。
- API版本兼容:如果你的工具支持cPanel API v1,也可以用
Email.get_pop_settings和Email.set_pop_settings,参数和逻辑完全一致,只是API版本的区别。
内容来源于stack exchange
相关产品推荐
相关产品推荐

