MailMessage, разница между свойствами Sender и From

87

Я использую 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
Фрик Буурман
источник
7
В случае реализации System.Net.Mail разницы нет. При вызове SmtpTransport.SendMail он делает это message.Sender != null ? message.Sender : message.From. В результате SmtpClient не позволяет отправлять разные значения для отправителя и отправителя
Сэм,

Ответы:

70

Выдержка из вики по электронной почте:

Поля заголовка: заголовок сообщения должен включать как минимум следующие поля:

От: адрес электронной почты и, возможно, имя автора (авторов). Во многих почтовых клиентах нельзя изменить, кроме как путем изменения настроек учетной записи.

Также обратите внимание, что поле «От:» не обязательно должно указывать на настоящего отправителя сообщения электронной почты. Одна из причин заключается в том, что очень легко подделать поле «От:» и позволить сообщению выглядеть как отправленное с любого почтового адреса. Электронную почту можно поставить цифровой подписью, которую гораздо сложнее подделать, но такие подписи требуют дополнительного программирования и часто для проверки внешних программ. Некоторые интернет-провайдеры не ретранслируют электронную почту, утверждающую, что она пришла из домена, не принадлежащего им, но очень немногие (если таковые имеются) проверяют, является ли человек или даже адрес электронной почты, указанные в поле "От:", тем самым связанный с подключением. Некоторые интернет-провайдеры применяют системы аутентификации электронной почты к электронной почте, отправляемой через их MTA, чтобы позволить другим MTA обнаруживать поддельный спам, который может исходить от них.

Отправитель: адрес фактического отправителя, действующего от имени автора, указанного в поле От: (секретарь, менеджер списков и т. Д.).

Подробности на http://en.wikipedia.org/wiki/Email.

Например, Gmail использует поля from / sender для отправки писем с адресов электронной почты, отличных от вашей учетной записи Gmail (после проверки).

нциолис
источник
28

Я нашел это объяснение довольно простым для понимания (выделено мной).

Одна область, в которой существует довольно много различных операций, - это концепция адреса отправителя электронного письма и отправителя электронного письма.

Некоторые почтовые серверы принимают адрес отправителя в качестве отправителя, некоторые автоматически определяют отправителя, а некоторые требуют явного указания отправителя.

Как правило, отправитель является фактическим отправителем электронного сообщения. Адрес отправителя, напротив, - это просто строка заголовка в электронном письме, которая может иметь или не иметь какое-либо значение. Адрес отправителя часто можно полностью опустить. Спамеры могут легко подделать адрес отправителя. Интернет-провайдеры пытаются гарантировать, что спамеры не смогут обмануть отправителя.

Джереми Виггинс
источник