通过调用官方文档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
**********************************************************************************************************************
调用官方文档API vb脚本修改用户密码问题
版面规则
-
maomaoniu112
- Level 1

- 帖子: 3
- 注册: 2017年10月13日, 08:56
Re: 调用官方文档API vb脚本修改用户密码问题
我遇到相同问题,不仅仅是用vb脚本,C#代码一样,任何修改密码的途径都会导致webmail-lite-master7.7.5客户端提示“验证失败,错误的登陆名或密码。”。
最甚至是直接通过hmailserver自己的管理工具修改,也同样会导致该问题。
目前正在找原因
最甚至是直接通过hmailserver自己的管理工具修改,也同样会导致该问题。
目前正在找原因
-
maomaoniu112
- Level 1

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

- 帖子: 3
- 注册: 2017年10月13日, 08:56
Re: 调用官方文档API vb脚本修改用户密码问题
问题已解决
把“高级”--“自动停用”禁用。
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;
}
}
把“高级”--“自动停用”禁用。
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;
}
}