2014-09-09 3 views
0

전자 메일 주소를 asp.net의 정규식으로 유효성을 검사 할 수 있습니다. 이제 이메일 주소가 실제로 존재하는지 여부를 어떻게 알 수 있습니까?전자 메일 주소가 실제로 있는지 또는 asp.net을 사용하지 않는지 어떻게 확인할 수 있습니까?

예를 들어, [email protected]은 올바른 이메일 형식을 가지고 있지만 존재하지 않습니다.

이 코드 만 Gmail의 SMTP와 함께 작동 : 나 자신을 수행하지만,하지 않은

protected void btnCheck_Click(object sender, EventArgs e) 
{ 
    TcpClient tClient = new TcpClient("gmail-smtp-in.l.google.com", 25); 

    string CRLF = "\r\n"; 
    byte[] dataBuffer; 
    string ResponseString; 
    NetworkStream netStream = tClient.GetStream(); 
    StreamReader reader = new StreamReader(netStream); 
    ResponseString = reader.ReadLine(); 
    /* Perform HELO to SMTP Server and get Response */ 
    dataBuffer = BytesFromString("HELO KirtanHere" + CRLF); 
    netStream.Write(dataBuffer, 0, dataBuffer.Length); 
    ResponseString = reader.ReadLine(); 
    dataBuffer = BytesFromString("MAIL FROM:<[email protected]>" + CRLF); 
    netStream.Write(dataBuffer, 0, dataBuffer.Length); 
    ResponseString = reader.ReadLine(); 
    /* Read Response of the RCPT TO Message to know from google if it exist or not */ 
    dataBuffer = BytesFromString("RCPT TO:<" + TextBox1.Text.Trim() + ">" + CRLF); 
    netStream.Write(dataBuffer, 0, dataBuffer.Length); 
    ResponseString = reader.ReadLine(); 
    if (GetResponseCode(ResponseString) == 550) 
    { 
     Response.Write("Mai Address Does not Exist !<br/><br/>"); 
     Response.Write("<B><font color='red'>Original Error from Smtp Server :</font></b>" + ResponseString); 
    } 
    /* QUITE CONNECTION */ 
    dataBuffer = BytesFromString("QUITE" + CRLF); 
    netStream.Write(dataBuffer, 0, dataBuffer.Length); 
    tClient.Close(); 
} 
+0

이메일을 보내고 다시 걷어차 야합니다. 심지어 많은 스팸 필터가 스팸 소스를 아는 "배달 할 수없는"답장을 보내지 않으므로 100 %가 아닙니다. –

답변

0

난 당신에게 단서를 제공 할 수 있습니다.

먼저 도메인의 MX 레코드 검사를 사용할 수 있습니다. [email protected]의 유효성을 검사하는 경우 두 번째로 SMTP와의 핸드 셰이크를 통해 확인합니다. 그러나 내가 허용하는 경우 서버로 전달됩니다.

내가 대부분의 전자 메일 응용 프로그램이 스팸 공격을 방지하기 위해 같은 방화벽 또는 soemthing을 가지고 있기 때문에 이것이 가능하다고 생각하지 않습니다이 링크를 http://www.codeproject.com/Articles/5189/End-to-end-Email-Address-Verification-for-Applicat

+1

스팸 발송자가 메일 목록을 확인하지 못하도록 SMTP 서버를 거의 사용하지 않아도됩니다. –

+0

다른 방법은 이메일을 보내고 프로세스가 다시 반송하는 것입니다. – codebased

+0

@dolan 동의했습니다. 포인트는 여전히 유효하며 많은 사람들이 할 수 있습니다! – codebased

0

을 시도합니다.

심지어 스팸 메일은 자신의 사이트에있는 사진을 추가하여 이메일 주소에 사진이 열렸는지 여부를 판단 할 수 있도록합니다.

전자 메일 주소의 유효성을 검사하는 가장 좋은 방법은 확인해야하는 사용자에게 유효성 검사 코드 또는 링크를 보내는 것입니다.

-1

일부 메일 제공 업체는 스패머의 기존 이메일 주소를 보호 할 수있는 주소가 없음을 인정하지 않습니다.

예를 들어 SMTP 프로토콜 (RFC 2821)의 VRFY 및 EXPN 명령은 대부분의 서버에서 무시되거나 오류가 발생합니다. 유용 할 수 있지만 스팸 발송자의 독성 행위로 인해 해당 기능을 사용할 수 없게됩니다.

반 - 구운 용액 : 메일을 보내십시오. 튀어 오면 존재하지 않습니다. 바운스가 발생하지 않거나 메일 서버가 보안 상 이유로 존재하지 않는다는 사실을 사용자가 알기를 원하지 않는 경우 사용자가 응답하도록하는 것과는 별도로 실제로 아무 것도 할 수 없습니다 (메일의 링크, 텍스트 전용 클라이언트를 사용하지 않는 사용자를위한 html 메일의 이미지 또는 항상 포함 된 이미지를 다운로드하는 사용자).

관련 문제