2009-08-28 6 views
11

저희 회사의 Exchange 서버를 통해 C# 코드에서 전자 메일을 보내려고합니다. 나는이 프로그램을 실행할 때smtp를 사용하지 않고 Exchange 서버를 통해 이메일을 보내는 방법은 무엇입니까?

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("exchangebox1.mycompany.com"); 
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage("[email protected]", 
       "[email protected]", 
       "title here", 
       "body here"); 
      client.Send(msg); 

나는 SmptException 말을 얻을 "전송 채널을 폐쇄, 서비스를 사용할 수 없습니다. 서버 응답이 4.3.2 서비스를 사용할 수 없습니다이었다 전송 채널을 닫는". 나는이 SMTP를 의미하는 것으로 해석하고 있습니다

우리의 교환 상자에서 사용하고 난 기본 Exchange 서버를 사용해야하는 메일을 보내도록 명령하지 않는다. 이게 맞습니까, 아니면 SMTP가 항상 작동해야합니까?

또한, 그것은 SMTP를 통해 주요 보내도록 Exchange 서버 만 허용 특정 컴퓨터/사용자로 구성된 수있다?

SMTP를 사용하지 않고 Exchange Server를 통해 메일을 보내려면 어떻게해야합니까?

감사합니다.

+0

당신이 있습니까를 이메일을 보내는 계정에서 전달 기능을 사용 하시겠습니까? 저는 Exchange 관리자가 인증을 사용하지 않고 해당 계정으로 이메일을 보낼 수 있도록 계정에 설정해야하는 항목이라고 생각합니다. –

+0

고마워, 나는 시도하고 알아낼거야. –

답변

7

당신은 구현하는 방법의 WCF Exchange Server Mail Transport 예를 사용할 수 있습니다 그것이 에 보내기 메소드를 호출 구체적으로는 응용 프로그램이 메시지를 전송

을 말한다 메시지 전송에 관한 Here

, 입니다 현재 출력 채널은 이어야합니다. 출력 채널은 메시지를 문자열로 serialize하고 메시지를 임시 보관함 폴더에 으로 만듭니다. 은 전자 메일 필드에 적절한 값을 설정합니다. 메시지에 이 생성되면 보낼 편지함으로 이동됩니다. 이는 장치 또는 Exchange 웹 바탕 화면의 CEMAPI를 통해 발생합니다. 장치에서 보낼 편지함의 메시지는 이고 다른 메시지는 ActiveSync에 정의 된 메시지입니다.

3

봅니다 이메일을 보내기 전에이 두 줄을 추가 :

client.UseDefaultCredentials = true; 
client.EnableSsl = true; 

그것은 거기에 내가 구글에서 약간의 속임수 것이다 자격 증명되는하지와 가장 가능성이 문제입니다 ...
From dailycode.net

+0

도움에 감사드립니다. 같은 예외가 생길지 모르겠습니다. –

4

새 Exchange 웹 서비스 관리 API 1.0을 사용할 수 있습니다. 그것은 최고의 솔루션 인 것 같습니다. 링크가 있습니다.

http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx
https://blogs.technet.com/b/exchange/archive/2009/04/21/3407328.aspx

뿐만 아니라 배포 목록을 수락 동의합니다.

2.이 API의 0 버전
http://msdn.microsoft.com/en-us/library/office/dd633709.aspx

+0

"이 주제는 더 이상 제공되지 않습니다", 거기에 가지 마라! – CSharper

+0

약간의 링크 썩음. 대안을 대체하고 API 2.0 버전에 대한 링크를 추가했습니다. – EBarr

0

나는이 오래된 스레드 알지만, 완성도, 당신은 Microsoft 교환 웹 서비스 nuget 패키지 고려해야합니다 https://www.nuget.org/packages/Microsoft.Exchange.WebServices

ExchangeService service = new ExchangeService(); 
service.AutodiscoverUrl("[email protected]"); 

EmailMessage message = new EmailMessage(service); 
message.Subject = "my subject"; 
message.Body = "my body"; 
message.ToRecipients.Add("[email protected]"); 
message.Save(); 

message.SendAndSaveCopy(); 
관련 문제