MailMessage仅接受@domain

时间:2018-05-11 17:15:16

标签: asp.net email pascal mailmessage

我在.NET中编写了一个代码,用于在我的应用程序中发送电子邮件:

Oxygenne + ASP.Net:

    mensagem:=MailMessage.Create(configemail[1],toUsers);
    mensagem.Subject:=title;
    mensagem.Body:=body;
    mensagem.IsBodyHtml:=IsBodyHtml;

当configemail [1]类似于“myemail@gmail.com”时,这样可以正常工作。但是,我需要在不使用域名的情况下发送电子邮件,例如“myemail”。 我收到了这个错误:

指定的字符串不是电子邮件地址所需的格式

我相信这是因为代码验证变量是否在字符串中有@anydomain。

我是否可以覆盖它,并让用户尝试在地址中不使用“@domain”发送电子邮件?

1 个答案:

答案 0 :(得分:0)

据我所知,SMTP要求所有收件人邮箱都有域名部分。您可以通过允许您与本地邮箱进行交互的其他协议与特定邮件系统进行交互,但您不应期望 SMTP 工具成为这样做的手段。

RFC 5321

  

仅允许使用可解析的完全限定域名(FQDN)      在SMTP中使用域名时...有两个例外      需要FQDN的规则

     

保留的邮箱名称" postmaster"可用于RCPT         没有域名资格的命令

这又引导我们了解RCPT command的语法:

rcpt = "RCPT TO:" ( "<Postmaster@" Domain ">" / "<Postmaster>" /
              Forward-path ) [SP Rcpt-parameters] CRLF

因此,唯一可用的普遍适用的表单是Forward-Path,它通过一些跳(并忽略了一些对您没有帮助的遗留选项)引导我们使用Mailbox语法:< / p>

Mailbox        = Local-part "@" ( Domain / address-literal )

因此,无论哪种方式,您都必须拥有@,然后您的选择归结为域名或IP地址。请注意,这可能会为我们提供一个开场白 - 您可以通过将地址指定为myemail@127.0.0.1来获得所需内容。