2009-06-29 3 views
3

C#의 메일 응용 프로그램에서 작업하고 있는데, 기본적으로 어떤 수신자가 성공적으로 메시지를 받았는지 확인할 수 있어야합니다. 실패 이유.전자 메일 메시지를 성공적으로 보낼 수 있는지 확인합니다.

요약하면 전자 메일 주소가 없을 때마다 예외가 throw되어야합니다. 그러나 SmtpClient.Send는이 경우 예외를 throw하지 않으므로 배달 실패 응답을 모니터링하고 구문 분석해야 할 수도 있습니다.

저는 이것이 간단한 작업이 아니라는 것을 알고 있습니다. 따라서 전문가에게 이메일 발송과 관련된 주요 문제를 처리하는 방법에 대한 몇 가지 팁을 부탁드립니다.

미리 감사드립니다.

답변

5

추적하거나 유사한 해시로 이미지를 사용하지 않는 한 보안상의 이유로 사용자가 할 수 있다고 생각하지 않습니다. 많은 메일 클라이언트는 자동으로 이미지를 다운로드하지 않습니다.

스팸 발송자가 이메일 수신 여부를 신뢰할 수 있다고 판단 할 수 있다고 상상해보십시오.

서버에 ping을 시도 할 수 있습니다 ... 즉 gmail.com을 사용할 수 있지만이 방법이 얼마나 신뢰할 수 있을지는 알 수 없습니다.

+0

정말 이미지를 사용하는 유일한 방법입니다. 이미지가로드되지 않으면 읽을 수 없도록 전자 메일을 구성하십시오. 수령인을 성가 시게하지만, 실제로 필요한 경우 수고를 덜어줍니다. – colithium

+1

@colithium 당신이 맞지만, 당신의 솔루션을 추천하지는 않을 것입니다. – alex

+0

일부 전자 메일 마케팅 회사에는 "열기 및 클릭 추적"과 같은 몇 가지 유사한 기능이 있습니다. 추적 할 때 이러한 종류의 해싱 메커니즘을 사용하는지 궁금합니다. 실제로 좋은 생각입니다. 개인적으로 생각하지 않았습니다. –

4

안정적으로 감지 할 수있는 방법이 없습니다. 그것은 SMTP 프로토콜의 본질입니다. 전자 메일이 배달되는지 여부를 알려주는 것은받는 사람 SMTP 서버에 달려 있습니다.

0

귀하의 구체적인 요청은 간단하게 실행할 수 없습니다. 전자 메일이 성공적으로 전송되었는지 여부를 확인하기 위해 반송 전자 메일을 사용한다고해도 일반적으로 즉시 반송되지 않으며 몇 시간이 걸릴 수 있습니다. 즉, 동 기적으로 시도해서는 안됩니다 (예 : , 전자 메일을받지 못한 경우 예외를 throw하도록 전자 메일을 보낸 메서드를 기대하십시오).

원하는 작업에 따라이 작업을 비동기 적으로 수행하여 요구 사항을 충족시킬 수 있습니다. 예를 들어 전자 메일이 반송되면 즉시 처리 할 필요가없는 메일 링리스트 응용 프로그램이있는 클라이언트에서 작업했습니다. 그들은 이것을 확실하게 알 필요조차하지 않았습니다 (즉, 전자 메일을받지 못했지만 수신 거부하지 않는 경우에는 상관하지 않습니다). 그들은 단지 전자 메일이 유효하지 않다는 것을 알아야하고이를 구독 취소해야합니다.

이 응용 프로그램은 LISTSERV를 사용했습니다. 보낸 전자 메일에는 고유 한 고유 한 Return-Path 헤더가 있습니다. 특정 수신자로부터 N 개의 수신 거부를 수신하면 전자 메일의 수신이 자동으로 취소되고 수신자와 관련된 모든 데이터베이스 레코드도 정리됩니다.

LISTSERV없이 이것을 구현하는 쉬운 방법이 있는지 잘 모르겠지만 smtp2web을 살펴보아야 할 수도 있습니다.

관련 문제