在“autodiscover.php”中提取电子邮件地址的正确语法

问题描述 投票:0回答:1

我需要从“php://input”中提取电子邮件地址并将其呈现在 xml 输出中 - 作为 Outlook“autodiscover.xml”流程的一部分。按预期工作,但我只需要传递电子邮件地址作为登录名。

这是我正在使用的 autodiscover.php,它可以提取地址,但我只获得用户名部分,而不是整个 UPN/地址。

<?php
//get raw POST data so we can extract the email address
$raw = file_get_contents("php://input");
$matches = array();
preg_match('/<EMailAddress>([^@]+)@([^\.]+).*<\/EMailAddress>/', $raw, $matches);

在 xml 渲染代码中,这些是我尝试用整个电子邮件地址填充的字段,例如 [email protected]

此代码仅将“user123”呈现为 LoginName

<LoginName><?php echo $matches[1]; ?></LoginName>

<Domain><?php echo $matches[2]; ?></Domain>

我尝试过 $matches[0];它内联添加了 EMailAddress,如下所示:

<LoginName>
<EMailAddress>[email protected]</EMailAddress>
</LoginName>

有没有一种简单的方法来传递“LoginName”节的整个地址?

我用上面的代码输出了什么:

<LoginName>user123</LoginName>

我想通过什么:

<LoginName>[email protected]</LoginName>
php outlook
1个回答
0
投票

我认为你的正则表达式可能有问题?试试这个:

preg_match('/<EMailAddress>([^<]+)<\/EMailAddress>/', $raw, $matches)

© www.soinside.com 2019 - 2024. All rights reserved.