为什么System.Net.Mail.MailAddress构造函数在域部分中解析带有斜杠“ /”的电子邮件?

马丁·奥布拉蒂尔

我们有以下代码:

using System;
using System.Net.Mail;

public class Program
{
    public static void Main()
    {
        var mailAddress = new MailAddress("username@domain/domain.com");    // Doesn't throw FormatException
        Console.WriteLine(mailAddress.Host);                                // Prints "domain/domain.com"
    }
}

我们希望MailAddress构造函数抛出FormatException,因为域名中不支持“ /”。MailAddress为什么要解析它们?

奥赞·艾丁(Ozan Aydin)

.NET使用RFC 2822标准来进行电子邮件地址的验证过程。

根据文档,正斜杠/)是域部分的有效字符。

请参阅地址规范RFC 2822 3.4.1

addr-spec       =       local-part "@" domain

local-part      =       dot-atom / quoted-string / obs-local-part

domain          =       dot-atom / domain-literal / obs-domain

domain-literal  =       [CFWS] "[" *([FWS] dcontent) [FWS] "]" [CFWS]

dcontent        =       dtext / quoted-pair

dtext           =       NO-WS-CTL /     ; Non white space controls

                        %d33-90 /       ; The rest of the US-ASCII
                        %d94-126        ;  characters not including "[",
                                        ;  "]", or "\"

域可以是RFC 2822 3.2.4中描述的点原子

atext           =       ALPHA / DIGIT / ; Any character except controls,
                        "!" / "#" /     ;  SP, and specials.
                        "$" / "%" /     ;  Used for atoms
                        "&" / "'" /
                        "*" / "+" /
                        "-" / "/" /
                        "=" / "?" /
                        "^" / "_" /
                        "`" / "{" /
                        "|" / "}" /
                        "~"

atom            =       [CFWS] 1*atext [CFWS]

dot-atom        =       [CFWS] dot-atom-text [CFWS]

dot-atom-text   =       1*atext *("." 1*atext)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用System.Net.Mail.MailMessage发送的电子邮件中的编码不正确

使用 System.Net.Mail 发送电子邮件 - 使用同步方法“Send”有效,但“SendAsync”无效

System.Net.Mail新MailMessage随机发送重复的电子邮件吗?

使用System.Net.Mail.SmtpClient将电子邮件发送到通讯组列表

电子邮件从Mac Mail中消失了

Selenium无法从https://www.temporary-mail.net/中的元素获取临时电子邮件的文本

将.jpg图像(base64字符串表示形式)嵌入到电子邮件正文(System.Net.Mail)中

在Windows 10 Mail应用程序中归档电子邮件的快捷键是什么?

为什么允许在PHP.Mail()函数的“发件人:”标头中使用任何电子邮件地址?

为什么django send_mail无法成功发送电子邮件且没有错误?

PHP Mail()无法发送带有附件的电子邮件

如何让 php mail() 函数发送电子邮件?

mail()函数发送2条相同的电子邮件

删除Java Mail中已删除的电子邮件

Java Mail:内嵌图像未显示在电子邮件中

使用wp_mail()将带有表单变量的电子邮件发送到电子邮件

为什么在CodeIgniter中无法发送电子邮件?

为什么收到的电子邮件不会显示在Thunderbird中?

为什么无法从Maildir中读取电子邮件?

为什么我不断从表单中收到电子邮件?

为什么PHP在电子邮件正文中为mail()添加额外的空间?

我无法使用Java Mail API发送电子邮件,但电子邮件已发送但未收到或未显示在已发送的电子邮件中

使用System.Net.Mail.MaiMessage和C#发送时,如何防止HTML电子邮件引用可打印的报价

为什么Outlook电子邮件将我的电子邮件更改为带有.dat扩展名的附件?

解析带有'['字符的电子邮件地址标题时,javax.mail错误

为什么我的电子邮件表单发送电子邮件,有时却不发送电子邮件

如何使用vb.net中的默认电子邮件客户端发送带有附件的电子邮件

为什么在蛋糕电子邮件功能发送的电子邮件中没有显示单字节零“ 0”

通过sendgrid / mail发送邮件时如何在我的电子邮件中添加退订链接