안녕하세요. 어떻게 C# winforms에서 전자 메일의 유효성을 검사 할 수 있습니까?C# winforms 응용 프로그램의 전자 메일 확인
답변
This page 이메일 주소와 일치하는 좋은 정규 표현식이 있습니다.
이것은 공식적인 확인 일뿐입니다. 전자 메일 주소가 실제로 존재하는지 확인하려면 주소로 실제 전자 메일을 보내고 메일 서버의 응답을 확인해야합니다.
는 그리고이 작업이 성공하더라도 SMTP 서버가 잘못된받는 사람 주소를 무시하도록 구성 할 수 있습니다.
정규식을 사용하여 유효성을 검사 할 수 있습니다. 거기에 대해 부동 다양한 다른 사람이 있지만 같이 내가 사용했던보다 포괄적 인 것들, 아주 긴 here
당신은 이메일 주소의 유효성을 검사하는 정규 표현식을 사용할 수 있습니다 : 당신이 유효성을 검사 할 경우
RegEx reg=new RegEx(@"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,6}$", RegexOptions.IgnoreCase); ///Object initialization for Regex
if(reg.IsMatch("email string"))
//valid email
대소 문자를 구분하지 않는 경우에만 작동합니다. 'RegexOptions.IgnoreCase'를 포함하십시오 – Dinah
을 주소 형식, 당신은 아마 정규 표현식을 사용해야합니다. 거기에 수천 개의 예제가 있으므로 최선의 것을 찾아서 선택할 수 있습니다.
당신이 주소가 있는지 확인하려면
은 this article는 특정 코드 예제를 제공하지 않고,이 작업을 수행하는 방법에 대한 몇 가지 포인터를 제공합니다.PHP에서 C#과 아무런 관련이 없지만 실제로 원격 서버에 연결하는 방법을 설명하는 좋은 링크가 포함되어 있습니다. –
가장 좋은 방법은 '@'두으로 분할 별도로 사서함 부분과 도메인 부분을 확인하는 것입니다. 나는 reg-ex가 떠 다니는 것을 알고 있지만 이것들은 상당히 복잡해질 수 있습니다.
RFC2822 섹션 3.4는 유효한 이메일 주소를 완전히 정의합니다. addr-spec
및 dot-atom
의 사양을 찾으십시오.
본질적으로 사서함 부분은 영숫자이거나!, #, $, %, &, ', *, +, -, /, =, ^, _ 중 하나의 문자열입니다. ,`, {, |,}, ~ 그리고 풀 스톱 '.' 도메인 부분은 비슷한 규칙을 따릅니다. 유연성을 감안할 때
는 가장 쉬운 방법은 단순히 하나가 않는 말을 문자열 체크 할 수있다 '@', 그들은 위의 설정에서하지 문자 가 포함 된 경우 다음 볼 별도로 사서함 및 도메인 부분을 확인합니다. 이것이 정규 표현식으로 수행되는지 또는 다른 방식으로 수행되는지는 사용자의 선택입니다. ,,public bool IsValidEmailAddress (string email)
{
try
{
MailAddress ma = new MailAddress (email);
return true;
}
catch
{
return false;
}
}
부여는 (예를 들어, 비 라틴 문자) 일부 기술적으로 유효한 이메일 주소에 잘못된 반응을 발사합니다
가장 좋은 방법은 자신을 .NET이 유효성 검사 작업을 전달하는 것 하지만 어쨌든 그 주소로 보낼 수 없으므로 처음부터 필터링 할 수도 있습니다. "@
public static bool ValidEmail(string email)
{
var regex = new Regex(
^((([AZ] | \ D | [#의 \의 $ %의 & '* :
나는 클라이언트 측에서 검증하는 jQuery 플러그인에서 정규식을 사용했습니다! + -/= \ \^{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_
? {\ |} ~] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) +) *) (| (\ X22)을 ((((\ (\ x0 \ x0 \ x0 \ x0 \ x0 \ x0 \ x0 \ x0a)) \ (\ x20 \ x23- \ x5b] | [\ x5d- \ x7e] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (\ ([\ x01- \ X09 \ X0B \ x0c \ x0d- \ x7f] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]))))) *) (((\ x20 | \ x09) * (\ x0d \ x0a))?(([az] | \ d | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (([x] ] | \ d | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) ([az] | \ d | - |. | | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF ([az] | [\ u00A0- \ uFFEF]) ([az] | \ d | [\ u00A0- \ uDEFFF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])) ([az] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) ([az] | \ d | - |. ([az] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]))))). $ ", RegexOptions.Compiled)
return regex.IsMatch(email);
}
이 Chris' 기사를 사용하여, 나는 (신용 @ townco billandr, 빌 Andreozzi에 부여되는 DNSLookup 라이브러리를 함께 묶어 문자열에 대한 확장 메서드를 만들어 mpass.com 소스에서), 톰 얀센에 의해 최소 텔넷 구현 (http://www.corebvba.be) 내 자신의 정규식 이메일 주소의 유효성을 검사하는 방법 :
/// <summary>
/// The regular expression to test the string against.
/// </summary>
private static readonly Regex validEmailRegex = new Regex(
@"^(([^<>()[\]\\.,;:\[email protected]\""]+"
+ @"(\.[^<>()[\]\\.,;:\[email protected]\""]+)*)|(\"".+\""))@"
+ @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
+ @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
+ @"[a-zA-Z]{2,}))$",
RegexOptions.Compiled);
/// <summary>
/// Determines whether the specified string is a valid email address.
/// </summary>
/// <param name="value">
/// The string to validate.
/// </param>
/// <returns>
/// <c>true</c> if the specified string is a valid email address;
/// otherwise, <c>false</c>.
/// </returns>
public static bool IsValidEmailAddress(this string value)
{
if (!validEmailRegex.IsMatch(value))
{
return false;
}
var mailServer = new DNS().LookupMX(value.Split('@')[1]);
if (!mailServer.MoveNext())
{
return false;
}
var telnet = new TelnetConnection(((DNS_MX_DATA)((DNS_WRAPPER)mailServer.Current).dnsData).pNameExchange, 25);
try
{
if (!TelnetCompare(telnet.Read(), "220"))
{
return false;
}
telnet.WriteLine("helo hi");
if (!TelnetCompare(telnet.Read(), "250"))
{
return false;
}
telnet.WriteLine("mail from: " + value);
if (!TelnetCompare(telnet.Read(), "250"))
{
return false;
}
telnet.WriteLine("rcpt to: " + value);
if (!TelnetCompare(telnet.Read(), "250"))
{
return false;
}
}
finally
{
telnet.WriteLine("quit");
}
return true;
}
/// <summary>
/// Compares two strings for length and content from the Telnet stream.
/// </summary>
/// <param name="input">The input string.</param>
/// <param name="response">The desired response.</param>
/// <returns>true if the response is the first characters if the input,
/// false otherwise</returns>
private static bool TelnetCompare(string input, string response)
{
if (string.IsNullOrEmpty(input) || string.IsNullOrEmpty(response))
{
return false;
}
if (input.Length < response.Length)
{
return false;
}
return string.CompareOrdinal(input.Substring(0, response.Length), response) == 0;
}
private void textBox1_Validating(object sender, CancelEventArgs e)
{
System.Text.RegularExpressions.Regex rEMail = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$");
if (textBox1.Text.Length > 0)
{
if (!rEMail.IsMatch(textBox1.Text))
{
MessageBox.Show("E-Mail expected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox1.SelectAll();
e.Cancel = true;
}
}
}
정규식 등록 = 새 정규 표현식 (@ "\ + w ([ - +.] \ w +) @ \ w + ([-.] \ w +). \ w + ([-.] \ w +) * ");
정규식
if (!reg.IsMatch(email.Text.Trim()))
{
errorProvider1.SetError(email, "Please provide a valid Email Address");
email.Focus();
return;
}
에 대한 /// 개체 초기화 네임 스페이스 System.Text.RegularExpression에게
- 1. iPhone에서 응용 프로그램의 전자 메일
- 2. 전자 메일 존재 확인 C#
- 3. iphone 응용 프로그램의 자동 전자 메일
- 4. 플러그인없이 전자 메일 확인
- 5. Paypal 전자 메일 확인
- 6. 전자 메일 확인
- 7. 전자 메일 암호 확인
- 8. 최적화 - ASP.NET 응용 프로그램의 전자 메일
- 9. 전자 메일 응용 프로그램의 로그 아웃 문제
- 10. 전자 메일 확인 - 어떤 방법
- 11. Android 전자 메일 보내기 확인
- 12. SWFUpload에 대한 전자 메일 확인
- 13. 내 응용 프로그램의 전자 메일 응용 프로그램을 엽니 다.
- 14. 전자 메일 및 PHP를 통한 전자 메일 확인?
- 15. PHP 전자 메일 IBM 전자 메일 만 유효성 확인 (전세계)
- 16. 대학 전자 메일 레일스 용 전자 메일 유효성 확인
- 17. 전자 메일 주소가 db에 이미 있는지 확인
- 18. 전자 메일 응용 프로그램 질문
- 19. 기존 SQL 기반 응용 프로그램의 전자 메일 알림
- 20. Windows 응용 프로그램에서 전자 메일 보내기 (C++)
- 21. .net 응용 프로그램의 SMTP 메일
- 22. # winforms : 프로그램의 첫 번째 실행 확인
- 23. 전자 메일 배달 확인 보고서를 확인하는 방법
- 24. devise가있는 개발 확인 전자 메일 건너 뛰기
- 25. 응용 프로그램 전자 메일 아키텍처
- 26. 프로그래밍 방식으로 Outlook 전자 메일 확인
- 27. Java 웹 응용 프로그램의 비동기 전자 메일 처리
- 28. 전자 메일 응용 프로그램의 Exchange 계정에서 "연락처 동기화"기능은 무엇입니까?
- 29. 웹 기반 전자 메일 응용 프로그램의 주소 제어
- 30. 웹 응용 프로그램의 전자 메일 알림 : cron 또는 BCC 사용
유효성 검사 이메일 주소 형식을 사용하도록 보장? 전자 메일 주소가 존재 함을 확인합니까? 전자 메일이 배달되었거나 수신되었는지 확인하십시오. 이메일의 개념을 확인 하시겠습니까? 여기에 어떤 질문이 있습니까? – glenatron
"진짜 질문이 아닙니다"라고 여러분! – Cerebrus