1

几个小时以来一直在为此苦苦挣扎。

这是一个 asp.net core 3.0 应用程序。

它通过电子邮件发送激活链接。然后我在收件箱中拿起那封电子邮件并单击它。
这个链接是:

https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.myserver.com%2FAccount%2FActivate%3Fpin%3DwDiC3S&data=02%7C01%7C%7C8311079d8b314d288f7a08d77e73c924%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637116908072496731&sdata=y80XhRTBI%2FOJq6UrN8Yw%2B3nWDjrb96IprWR2IKIouVU%3D&reserved=0

然后它通过调用该视图向我发送确认消息 9#)。但它会这样做两次。奇怪的是,如果我将此 url 从 1 个浏览器复制并传递到另一个浏览器,我只会收到预期的 1 封确认电子邮件。

我能看到的唯一区别是安全链接的东西添加 si 从复制和粘贴该链接中删除。IE:

https://www.myserver.com/Account/Activate?pin=wDiC3S

我不知道如何调试这个?

4

3 回答 3

3

不久前我遇到了一个类似的问题,似乎与电子邮件客户端预取和访问链接有关。作为调试工作的一部分,您可能想尝试不同的电子邮件提供商和客户端。

这是关于该主题的一个相关问题 - 如何阻止电子邮件客户端自动访问电子邮件中的链接?

于 2019-12-11T20:25:20.763 回答
3

我刚刚遇到这种情况。我花了几天时间才找到。我在 Outlook 消息中有一个链接,我编写了代码以确保它没有被调用两次。这个代码在我第一次调用它时就被激活了。最终我意识到电子邮件客户端必须调用它两次。我将不得不写一个工作。

我很高兴我找到了它。它快把我逼疯了!

我认为这是一个前景错误。

于 2020-05-17T09:20:39.870 回答
0

我已经有这个问题几天了。通过反复试验,我刚刚通过自己的测试找到了解决方案,您只需要使用您的 Outlook 帐户设置SMTP配置。

使用 PHPMailer

我之前有这个配置

$trans = Swift_SmtpTransport::newInstance()
->setHost("xxxxxxxxxxx.mail.protection.outlook.com")
->setPort(25);

我改为

$trans = Swift_SmtpTransport::newInstance('smtp.office365.com', 587, 'tls')
->setUsername('xxxxx@xxxxxxx')
->setPassword('xxxxxxxxxxxx');

现在,它工作正常。我认为 ATP aka SafeLink 保护功能仅在您的组织内未验证电子邮件地址(发件人)时才有效。

于 2021-06-18T07:58:47.557 回答