3

我正在我网站的控制器中生成一封电子邮件,其中包含指向我网站的链接:

"http://" & Request.Url.Authority & "/some-page"

当我在本地机器(returns localhost:12345)和生产环境(returns www.company.com)上测试它时,这很有效,但结果有 1 人得到了这个:

http://www.company..com/some-page

如您所见..,域名中有 2 个。我无法重现此错误,这怎么可能?

编辑:更多信息

  • 我发送的电子邮件类型是纯文本电子邮件(没有 HTML 或 RTF)
  • 发出有问题的请求时,网络服务器日志将 www.company.com 显示为域
  • 我只收到了电子邮件的部分截图。我认为电子邮件客户端是 Outlook,但我看不出 Outlook 会误解链接的原因。
  • 这个人(或恶意软件)很可能编辑了这封电子邮件的内容。
4

3 回答 3

2

这实际上是电子邮件编码方式的问题,请参阅此答案:https ://stackoverflow.com/a/6603002/186288 。总之,您应该将编码更改为 UTF8 以强制对电子邮件进行 base-64 编码,否则某些电子邮件客户端可能会误解默认的 Content-Transfer-Encoding: Quoted-Printable; 编码并在碰巧到达换行点的 URL 中添加额外的“.”。

为此,请在发送电子邮件之前添加此行:

mail.BodyEncoding = System.Text.Encoding.UTF8;
于 2014-09-09T01:12:14.730 回答
2

我应该用一个简单的例子早点尝试这个:

Module Module1
    Sub Main()
        Dim SomeAddress As New Uri("http://www.example..com/test")

        Console.WriteLine(SomeAddress.Authority)
    End Sub
End Module

这将在构造函数中抛出异常:

System.UriFormatException - 无效的 URI:无法解析主机名

因此,如果不进行编辑,客户就无法从我的代码中收到这样的电子邮件。

于 2013-04-27T12:33:59.423 回答
1

你为什么用Request.Url.Authority?我建议你避免使用它,并使用 Request.Url.Host。最好使用Request.Url.Host或 Uri 类构造函数,当构造不正确的 URI 时,它会抛出异常,您可以记录它或显示错误。

无论如何,很难预测为什么一个用户得到了www.company..com无论如何,您的Request.Url.Authority串联代码无法生成它。所以可能错误在其他位置。

于 2013-04-21T13:22:17.510 回答