拥有一个使用 System.Net.Main 命名空间通过 SMTP 发送电子邮件的 .NET 程序。
它在客户站点上,因此它会在到达目的地之前通过(一系列?)SMTP 中继服务器。
目前我没有关于这个 smtp 重播/电子邮件基础设施的信息(并且获取这些信息将很困难)。
沿着这条线的某处,一个感叹号被插入到电子邮件中的长 URL 中,距行首大约 100 个字符。
编辑-实际上已经找到了大约 1000 个字符
这不会发生在测试系统或数百个其他站点上。
我确信这与转义码有关,以打破长队。
有人有什么想法吗?
我自己也受到了打击。
如果您正在构建一个没有任何回车符的 html 消息,您可能会在大约 1000 个字符标记处出现错误。
解决方案是添加几个 \r\n 字符,使每行小于 1000(如果不计算 \r\n 字符,则为 988)。
请参阅第 2.1.1 节。RFC 2822的行长限制了解更多详情:
以一定数量的字符换行通常是客户端问题。如果您没有在其他站点或测试机器上看到它,我认为它不是您的代码。看看您是否找不到正在使用哪个客户端来接收消息 - 它可能是一些在一定数量的字符处自动换行的笨拙的旧东西。
如果在运行相同代码的许多其他站点上没有发生问题,那么听起来 .Net 应用程序不会导致问题。问题站点是否位于可能正在监视 smtp 流的某种应用程序防火墙或反垃圾邮件设备后面?如果是这样,可能会有一条关于截断正在触发的长 URL 的规则,这会导致电子邮件中的 URL 被缩短。