PLESK XML API:如何在不删除邮件别名的情况下更改邮件帐户信息

时间:2015-11-25 12:57:40

标签: xml api email passwords plesk

我正在尝试更改/更新邮件帐户信息,而不更改/删除(?)plesk 12.5中的其他邮件帐户设置。 在这种特殊情况下,我想更改帐户的密码,而不删除它的别名[es](或任何其他信息粘贴到此邮件帐户......)。

首先,我试过:

$request = <<<EOF
<packet>
  <mail>
    <update>
      <set>
        <filter>
          <site-id>SOME ID</site-id>
          <mailname>
            <name>SOME NAME</name>
            <password>
              <value>SOME VALUE</value>
              <type>NEW PASSWORD</type>
            </password>
            <description><![CDATA[SOME DESCRIPTION]]></description>
          </mailname>
        </filter>
      </set>
    </update>
  </mail>
</packet>
EOF;

$request = <<<EOF <packet> <mail> <update> <set> <filter> <site-id>SOME ID</site-id> <mailname> <name>SOME NAME</name> <password> <value>SOME VALUE</value> <type>NEW PASSWORD</type> </password> <description><![CDATA[SOME DESCRIPTION]]></description> </mailname> </filter> </set> </update> </mail> </packet> EOF;

当我执行此操作时,一切正常但是:所有邮件别名都消失了! :-(到目前为止我真正不明白的是:“为什么”?我根本没有触及别名...

所以我想到的第二种方法是首先“获取”别名,用上面的代码更改密码并再次粘贴“旧”别名。 但是当我尝试使用以下命令获取别名时

$request = <<<EOF
<packet>
  <mail>
    <get_info>
      <filter>
        <site-id>SOME ID</site-id>
        <name>SOME NAME</name>
      </filter>
      !!<aliases/>!!
    </get_info>
  </mail>
</packet>
EOF;

$response = $client->request($request);
var_dump($response);

OUTPUT: string(int)“ok id name mailalias1 mailalias2 xxx off description”(到目前为止我添加了什么是正确的手动两个别名)

现在我有两个问题:

1。)哪种方式是最好/正确的“让我的愿望发生”? ; - )

2.。)如何从PLESK的响应中获取单个信息(即:只是我发布为“OUTPUT”的字符串中的别名)

我使用的参考:http://docs.plesk.com/en-US/12.5/api-rpc/reference/managing-mail/

提前多多感谢! :) 迈克尔

PS:对不起我的“未经修饰的”英语......这是很久以前的事了!

1 个答案:

答案 0 :(得分:0)

也许我没有得到你,但这就是你如何从API响应中获取别名:

$xml = new SimpleXMLElement($output);

$result = $xml->xpath('//alias');

while(list( , $node) = each($result)) {
    echo $node . "\n";
}