2014-11-14 3 views
0

시나리오에서 사용자에게 전자 메일을 보내야합니다. 그러나 문제는 이메일에 대한 암호와 사용자 이름을 하드 코딩하거나 구성하지 않아야한다는 것입니다. 누구든지 PHP MAILER를 알고 있다면 이메일을 보내기위한 자신의 사용자 이름과 암호를 제공 할 필요가없는이 기능을 지원합니다. 그리고이 emals는 로컬 호스트를 통해 직접 전송할 수 있습니다. 하지만 이건 C와 함께 작동하지 않습니다 #사용자 이름과 암호를 구성하지 않고 C#으로 전자 메일 보내기

질문은 우리가 C#에서 동일한 할 수 있습니까? 그렇다면 어떻게? 거의 모든 곳에서 수색했기 때문에 카운트를 확인하지 않고 메일을 보낼 수있는 SMTP 클라이언트를 찾아야한다는 것 외에는 아무것도 찾지 못했습니다.

답변

2

config.file에서 암호화 된 사용자 이름과 암호를 항상 저장할 수 있습니다.

이 명령을 사용 설정 을 % windir %의에서 어떤 부분을 암호화하는 \ Microsoft.NET 프레임 워크 \ \ V2.0.50727 \ 경우 aspnet_regiis -pef "connectionStrings"C : \ 문서 및 설정 \ 밥 \ 프로젝트 \ MyProject를

암호화가 MACHINE-Specific이라는 점에 유의하십시오. http://msdn.microsoft.com/en-us/library/dtkwfdky(v=vs.100).aspx

+0

내가 말했듯이 응용 프로그램에서 암호를 암호화하거나 일반 텍스트로 제공하고 싶지 않습니다. PHP MAILER가 PHP에서도이를 수행 할 수 있다면 C#도 있어야합니다. – Abhishek

+1

개방형 SMTP 서버를 사용할 수 있습니까? – Jontatas

+0

@Abhishek 암호를 전혀 사용하고 싶지 않다면 이것은 프로그래밍 문제가 아니라 smtp-server의 설정입니다. 하지만 암호없이 메일을 보내도록 권장하지는 않습니다. –

0

은 물론이 작업을 수행 할 수 있지만 당신처럼 말했다 : 그래서 당신은 MSDN에 대상 시스템에

자세한 내용을이 작업을 수행해야합니다

emals 직접 localhosts

을 통해 전송 될 수있다

이 경우 smtp 서버가 있으며 익명 액세스/기본 자격 증명을 허용하도록 미리 구성되어 있습니다. 동일한 문제는 C# 또는 .Net 응용 프로그램에서도 마찬가지입니다. 컴퓨터에 전자 메일을 보낼 수있는 SMTP 서버가 있으면 잘 보내고 인증 할 필요가 없습니다.

0

당신은 CredentialCache.DefaultNetworkCredentials에 자격 증명을 설정하여 예를 들어 Windows 인증을 사용할 수 있습니다

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials; 
0

당신은 항상, 또는 기능을 제 3 자 라이브러리를 얻기 위해 매우 어려운 일이 아니다 자신의 SMTP 구현을 롤백 할 수 있습니다 SMTP.

그러면 대상 도메인의 'mx'레코드 ('example.org'-> 'mx01.example.org'와 같을 수 있음)에 대한 DNS 조회를 수행하고 해당 mx 서버에 연결 한 다음 SMTP 대화를 수행하십시오.

이것은 "정상적으로 작동해야하지만"스팸 필터 이유로 특정 메일 서버가 알 수없는/신뢰할 수없는 호스트 또는 허용되지 않는 호스트로부터의 SMTP 연결을 수락하지 않을 수 있습니다. 이 경우 신뢰할 수있는 MTA를 통해 이동해야합니다. 기본적으로 이는 인증이 필요함을 의미합니다.