2010-03-04 3 views
5

방금 ​​Joel을 들었습니다 & Jeff가 자신의 podcast 번호 83에서 보낸 사람 ID에 대해 말하면서 제가 일하고있는 사이트에 필요한 것입니다.C#을 통해 메일을 보낼 때 보낸 사람 ID를 구현하는 방법은 무엇입니까?

서버에서 보낸 모든 전자 메일의 약 90 %가 반송되거나 유사합니다. 이는 서버가 "유효성이 확인되지"않았기 때문일 수 있습니다.

서버용 SPF 레코드가 있지만 그게 꽤 있습니다.

그래서 StackOverflow가 이러한 문제를 해결 했으므로 보낸 사람 ID를 사용해야합니다.

위키 백과에서 말할 수있는 한 메일을 보낼 때 메일 헤더를 수정해야합니다. C#에서이 작업을 수행하려면 어떻게해야합니까?

또한이 작업을 수행하려면 DNS를 현명하게 설정해야합니까?

아니면 완전히 잘못된 트랙에 있습니까?

편집 : C#에서 메일을 보내기위한 표준 SmtpClient 클래스를 사용하고 있으며 일반 텍스트와 HTML 버전의 메일 바디를 모두 포함합니다.

+0

도메인의 DNS 구성에 spf를 추가 했습니까? – curtisk

+0

그래, 순서대로 그 부분을 얻었습니다 :-) – Steffen

답변

4

하면 다른 사용자를 대신하여 메일을 보내는 당신은 당신이 다음을 수행해야 할 수 있습니다 수락 할 경우

mail.To = new MailAddress("[email protected]", "To Someone"); 
mail.From = new MailAddress("[email protected]", "Sending User"); 
mail.Sender = new MailAddress("[email protected]", "Your Server"); 
mail.ReplyTo = new MailAddress("[email protected]", "Sending User"); 

이이 생성됩니다 : 당신은 MailMessage 개체에서

SPF 유효성 검사가 작동하는 데 필요한 적절한 헤더 (서버가 기본값으로 설정되었다고 가정하면 유효성을 검사 할 부분을 선택할 수 있음)

대부분의 SPF 프로토콜이 있는지 확인하기 위해 Sender: 헤더의 타당성을 검증 사람 :에 대한 사용자
을 보내는 대신에 사용자 서버 : 이것은에서 (전망)에

같은 이메일 보이게됩니다 도메인을 보내거나 거부함으로써 도메인을 "보낸 사람"과 상관없이 도메인에서 가져와야합니다.

또한 your SPF records set up right이 있고 IP 주소가 spamhaus와 같은 blacklist이 아닌지 다시 확인하고 싶을 수 있습니다. 통화의 실제 반환 텍스트를 확인하면 일반적으로 5.something 오류로 차단되는 이유를 알 수 있습니다.

+0

저는 코드에서 센더 부분을 얻지 못했습니다. 그래서 약간 도움이 될 것입니다. 또한 SPF 레코드에 대한 링크를 확인하고 올바른지 확인합니다. 감사 :-) – Steffen

2

보낸 사람 ID/SPF에 대해 머리글을 변경해야하는 이유가 표시되지 않습니다. 자신의 레코드를 사용하면 보내는 메시지가 보낸 사람 : DNS의 SPF 레코드에 일치하는 게시 된 보내는 (공개) IP가있는 도메인인지 확인해야합니다.

그러나 SPF 레코드 유형에 따라 메일 서버가 일치시킬 도메인을 계산하는 방법을 결정하기 위해 MailMessage.Headers를 검사하여 어떤 헤더가 전송되는지 확인 (또는 자신에게 메시지 보내기) 할 수 있다고 생각합니다. 귀하의 SPF 기록에.