MailMessage, Sender 및 From 속성의 차이점


88

System.Net.NET Framework 1.1에서 3.5 프레임 워크로 전환 한 이후로 네임 스페이스를 사용해 왔지만 그 이후로 당황한 점이 하나 있습니다. 클래스 SenderFrom속성 과 속성 의 차이점은 무엇입니까 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에서 보낸 사람과 보낸 사람에 대해 고유 한 값을 보낼 수 없습니다
Sam

답변:


70

이메일의 위키에서 발췌 :

헤더 필드 : 메시지 헤더에는 최소한 다음 필드가 포함되어야합니다.

보낸 사람 : 전자 메일 주소 및 선택적으로 작성자의 이름입니다. 많은 전자 메일 클라이언트에서 계정 설정 변경을 제외하고 변경할 수 없습니다.

또한 "보낸 사람 :"필드가 전자 메일 메시지의 실제 보낸 사람 일 필요는 없습니다. 한 가지 이유는 "보낸 사람 :"필드를 위조하고 메시지가 모든 메일 주소에서 온 것처럼 보이게하는 것이 매우 쉽기 때문입니다. 위조하기가 훨씬 더 어려운 전자 메일에 디지털 서명이 가능하지만 이러한 서명에는 추가 프로그래밍이 필요하며 종종 외부 프로그램을 확인해야합니다. 일부 ISP는 자신이 호스팅하지 않는 도메인에서 온 것으로 주장하는 전자 메일을 릴레이하지 않지만 "보낸 사람 :"필드에 이름이 지정된 사람 또는 전자 메일 주소가 있는지 확인하는 경우는 거의 없습니다. 연결과 관련이 있습니다. 일부 ISP는 MTA를 통해 전송되는 전자 메일에 전자 메일 인증 시스템을 적용하여 다른 MTA가 자신이 보낸 것처럼 보일 수있는 위조 된 스팸을 감지 할 수 있도록합니다.

보낸 사람 : 보낸 사람 : 필드 (비서, 목록 관리자 등)에 나열된 작성자를 대신하여 작업 하는 실제 보낸 사람의 주소입니다 .

http://en.wikipedia.org/wiki/Email 에 대한 세부 정보

예를 들어 gmail은 from / sender 필드를 사용하여 Gmail 계정과 다른 이메일 주소에서 이메일을 보냅니다 (확인 후).


28

나는 설명이 꽤 이해하기 쉽다는 것을 알았다 (내 강조).

매우 다양한 작업이있는 한 영역은 이메일의 보낸 사람 주소와 이메일의 보낸 사람이라는 개념입니다.

일부 이메일 서버는 보낸 사람 주소를 보낸 사람으로 받아들이고, 일부는 보낸 사람을 자동으로 추론하고, 일부는 보낸 사람을 명시 적으로 지정해야합니다.

일반적으로 보낸 사람은 이메일 메시지의 실제 발신자입니다. 반대로 보낸 사람 주소는 단순히 이메일의 헤더 행으로, 어떤 의미로 간주 될 수도 있고 그렇지 않을 수도 있습니다. 보낸 사람 주소는 종종 완전히 생략 할 수 있습니다. 스팸 발송자는 발신자 주소를 쉽게 스푸핑 할 수 있습니다. ISP는 스팸 발송자가 보낸 사람을 스푸핑하지 못하도록합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.