90

System.Net自从我们从 .NET Framework 1.1 切换到 3.5 框架后,我就一直在使用命名空间,但从那以后有一件事让我感到困惑。Sender类中的和From属性有什么区别MailMessage

它们是否相同,如果不是,是否有理由与Sender一起使用From

例如:

Using m As New System.Net.Mail.MailMessage()
    m.Sender = New System.Net.Mail.MailAddress("test@test.com", "Name here")
    m.From = New System.Net.Mail.MailAddress("test@test.com", "Name here")

    m.Subject = "Test"
    m.Body = "Test"

    Dim client As New System.Net.Mail.SmtpClient("mymailserver.com")
    client.Send(m)
End Using
4

2 回答 2

71

wiki 上电子邮件的摘录:

标头字段:消息标头应至少包括以下字段:

发件人:电子邮件地址,以及可选的作者姓名。在许多电子邮件客户端中,除非通过更改帐户设置,否则无法更改。

另请注意,“发件人:”字段不必是电子邮件的真实发件人。一个原因是很容易伪造“发件人:”字段并让邮件看起来来自任何邮件地址。可以对电子邮件进行数字签名,这很难伪造,但此类签名需要额外的编程,并且通常需要外部程序来验证。一些 ISP 不会中继声称来自非他们托管的域的电子邮件,但很少(如果有)检查以确保“发件人:”字段中指定的人甚至电子邮件地址是一个与连接相关联。一些 ISP 将电子邮件身份验证系统应用于通过其 MTA 发送的电子邮件,以允许其他 MTA 检测可能来自他们的伪造垃圾邮件。

发件人:在“发件人”字段中列出的代表作者行事的实际发件人的地址(秘书、列表管理员等)。

http://en.wikipedia.org/wiki/Email上的详细信息

例如,gmail 使用 from/sender 字段从与您的 gmail 帐户不同的电子邮件地址发送电子邮件(验证后)。

于 2010-04-19T15:43:33.570 回答
28

我发现这个解释很容易理解(强调我的)。

在电子邮件的“发件人地址”和“电子邮件的发件人”的概念中,存在相当多种操作的一个领域。

有些电子邮件服务器会接受发件人地址作为发件人,有些会自动推断发件人,有些则需要明确指定发件人。

通常,发件人是电子邮件的实际发起者。相比之下,发件人地址只是电子邮件中的一个标题行,可能会或可能不会被认为意味着什么。发件人地址通常可以完全省略。垃圾邮件发送者可以轻松欺骗发件人地址。ISP 试图确保垃圾邮件发送者无法欺骗发件人。

于 2012-09-26T18:01:05.023 回答