调用官方文档API vb脚本修改用户密码问题

hMailServer的综合讨论。包括安装、使用、webmail等问题。

版主: jimmy, Hsia

版面规则
回复
380036207@qq.com
Level 1
Level 1
帖子: 1
注册: 2016年9月9日, 16:17

调用官方文档API vb脚本修改用户密码问题

帖子 380036207@qq.com »

通过调用官方文档vb脚本修改用户密码,系统提示修改成功,查看数据库发现,密码已修改,但是怎么就登录不上去呢?一直提示:验证失败,错误的登陆名或密码。有朋友能帮忙解决下吗?

******************************** 官方脚本 ******************************************************

Function ModifyHmailPassWordAccount(domainName,userName,password,adminName,adminPassword)
Dim obApp
Set obApp = CreateObject("hMailServer.Application")

' Authenticate. Without doing this, we won't have permission
' to change any server settings or add any objects to the
' installation.
Call obApp.Authenticate(adminName, adminPassword)

' Locate the domain we want to add the account to
Dim obDomain
Set obDomain = obApp.Domains.ItemByName(domainName)

Dim obAccount
Set obAccount = obDomain.Accounts.ItemByAddress(userName)

' Set the password to "secret"
obAccount.Password = password

obAccount.Save
End Function


**********************************************************************************************************************
maomaoniu112
Level 1
Level 1
帖子: 3
注册: 2017年10月13日, 08:56

Re: 调用官方文档API vb脚本修改用户密码问题

帖子 maomaoniu112 »

我遇到相同问题,不仅仅是用vb脚本,C#代码一样,任何修改密码的途径都会导致webmail-lite-master7.7.5客户端提示“验证失败,错误的登陆名或密码。”。
最甚至是直接通过hmailserver自己的管理工具修改,也同样会导致该问题。

目前正在找原因
maomaoniu112
Level 1
Level 1
帖子: 3
注册: 2017年10月13日, 08:56

Re: 调用官方文档API vb脚本修改用户密码问题

帖子 maomaoniu112 »

花了几天时间没找到原因。
但发现当通过各种方式修改密码后(我是通过hmailserver自己的管理工具修改的密码,或者直接update hm_accounts表的accountpassword字段),
隔几个小时(具体隔多久不清楚,但我是间隔了3个小时多),就完可以登录了。
maomaoniu112
Level 1
Level 1
帖子: 3
注册: 2017年10月13日, 08:56

Re: 调用官方文档API vb脚本修改用户密码问题

帖子 maomaoniu112 »

问题已解决

把“高级”--“自动停用”禁用。
VBS代码应该没问题,我尝试多次修改密码,不会导致“验证失败,错误的登陆名或密码。”
Dim obApp
Set obApp = CreateObject("hMailServer.Application")

' Authenticate. Without doing this, we won't have permission
' to change any server settings or add any objects to the
' installation.
Call obApp.Authenticate("Administrator", "admin!123")

' Locate the domain we want to add the account to
Dim obDomain
Set obDomain = obApp.Domains.ItemByName("goldfish.com")

Dim obAccount
Set obAccount = obDomain.Accounts.ItemByAddress("yyfan@goldfish.com")

' Set the password to "secret"
obAccount.Password = "secret"

obAccount.Save

同时提供一个C#版本的代码
/// <summary>
/// 修改密码方法
/// </summary>
/// <param name="userName">邮件服务器管理账户,一般为administrator</param>
/// <param name="password">邮件服务器管理账户密码</param>
/// <param name="domainName">域名</param>
/// <param name="accountAddress">邮件地址</param>
/// <param name="newAccountPassword">邮件地址新密码</param>
/// <returns></returns>
public bool ChangePassword(string userName, string password, string domainName, string accountAddress, string newAccountPassword)
{
try
{
hMailServer.Application hMailApp = Authenticate(userName, password);
hMailServer.Domain myDomain = hMailApp.Domains.get_ItemByName(domainName);

hMailServer.Account account = myDomain.Accounts.get_ItemByAddress(accountAddress);
account.Password = newAccountPassword;

account.Save();
return true;
}
catch (System.Exception)
{
throw;

}
}
回复