SendMail 샘플은 워크플로 애플리케이션 내에서 AsyncCodeActivity 사용하기 위해 SMTP를 사용하여 메일을 보내기 위해 파생되는 사용자 지정 작업을 만드는 방법을 보여 줍니다. 사용자 지정 작업은 비동기적으로 전자 메일을 보내고 인증을 사용하여 메일을 보내는 기능을 SmtpClient 사용합니다. 또한 테스트 모드, 토큰 대체, 파일 템플릿 및 테스트 삭제 경로와 같은 일부 최종 사용자 기능을 제공합니다.
다음 표는 SendMail
활동에 대한 인수를 자세히 설명합니다.
이름 | 유형 | 설명 |
---|---|---|
호스트 | 문자열 | SMTP 서버 호스트의 주소입니다. |
항구 | 문자열 | 호스트에 있는 SMTP 서비스의 포트입니다. |
EnableSsl | bool | SSL(Secure Sockets Layer)을 사용하여 연결을 암호화할지 여부를 SmtpClient 지정합니다. |
사용자 이름 | 문자열 | 보낸 사람 Credentials 속성을 인증하기 위해 자격 증명을 설정하는 사용자 이름입니다. |
암호 | 문자열 | 보낸 사람 Credentials 속성을 인증하기 위해 자격 증명을 설정하는 암호입니다. |
주제 | InArgument<T> <문자열> | 메시지의 제목입니다. |
몸 | InArgument<T> <문자열> | 메시지의 본문입니다. |
첨부 파일 | InArgument<T> <문자열> | 이 전자 메일 메시지에 첨부된 데이터를 저장하는 데 사용되는 첨부 파일 컬렉션입니다. |
부터 | MailAddress | 이 이메일 메시지의 발신 주소. |
에게 | InArgument<T><MailAddressCollection> | 이 전자 메일 메시지의 받는 사람이 포함된 주소 컬렉션입니다. |
CC(참조) | InArgument<T><MailAddressCollection> | 이 전자 메일 메시지에 대한 CC(탄소 복사본) 받는 사람이 포함된 주소 컬렉션입니다. |
숨은 참조 | InArgument<T><MailAddressCollection> | 이 전자 메일 메시지에 대한 BCC(블라인드 카본 복사본) 수신자가 포함된 주소 컬렉션입니다. |
토큰 | InArgument<T> <IDictionary<문자열, 문자열>> | 본문에서 변경할 토큰입니다. 이 기능을 사용하면 사용자가 본문에 지정한 몇몇 값을 나중에 이 속성을 통해 제공된 토큰으로 대체할 수 있습니다. |
바디 템플릿 파일 경로 | 문자열 | 본문에 대한 템플릿의 경로입니다. 활동은 SendMail 이 파일의 내용을 본문 속성에 복사합니다.템플릿에는 토큰 속성의 내용으로 대체되는 토큰이 포함될 수 있습니다. |
TestMailTo | MailAddress | 이 속성을 설정하면 모든 전자 메일이 지정된 주소로 전송됩니다. 이 속성은 워크플로를 테스트할 때 사용됩니다. 예를 들어 모든 전자 메일이 실제 받는 사람에게 보내지 않고 전송되는지 확인하려는 경우입니다. |
TestDropPath | 문자열 | 이 속성을 설정하면 모든 전자 메일도 지정된 파일에 저장됩니다. 이 속성은 워크플로를 테스트하거나 디버깅할 때 발신 전자 메일의 형식과 내용이 적절한지 확인하기 위해 사용됩니다. |
솔루션 내용
솔루션에는 두 개의 프로젝트가 포함됩니다.
프로젝트 | 설명 | 중요 파일 |
---|---|---|
메일 보내기 | SendMail 활동 | 1. SendMail.cs: 기본 활동에 대한 구현 2. SendMailDesigner.xaml 및 SendMailDesigner.xaml.cs: SendMail 활동 디자이너 3. MailTemplateBody.htm: 전자 메일을 보낼 템플릿입니다. |
SendMailTestClient | SendMail 활동을 테스트할 클라이언트입니다. 이 프로젝트는 SendMail 작업을 호출하는 두 가지 방법, 즉 선언적 및 프로그래밍 방식을 보여 줍니다. | 1. Sequence1.xaml: SendMail 작업을 호출하는 워크플로입니다. 2. Program.cs: Sequence1을 호출하고 SendMail을 사용하는 프로그래밍 방식으로 워크플로를 만듭니다. |
SendMail 활동의 추가 구성
샘플에는 표시되지 않지만 사용자는 SendMail 활동의 추가 구성을 수행할 수 있습니다. 다음 세 섹션에서는 이 작업을 수행하는 방법을 보여 줍니다.
본문에 지정된 토큰을 사용하여 전자 메일 보내기
이 코드 조각은 본문에 토큰이 포함된 전자 메일을 보내는 방법을 보여 줍니다. 본문 속성에 토큰이 제공되는 방법을 확인합니다. 해당 토큰의 값은 토큰 속성에 제공됩니다.
IDictionary<string, string> tokens = new Dictionary<string, string>();
tokens.Add("@name", "John Doe");
tokens.Add("@date", DateTime.Now.ToString());
tokens.Add("@server", "localhost");
new SendMail
{
From = new LambdaValue<MailAddress>(ctx => new MailAddress("john.doe@contoso.com")),
To = new LambdaValue<MailAddressCollection>(
ctx => new MailAddressCollection() { new MailAddress("someone@microsoft.com") }),
Subject = "Test email",
Body = "Hello @name. This is a test email sent from @server. Current date is @date",
Host = "localhost",
Port = 25,
Tokens = new LambdaValue<IDictionary<string, string>>(ctx => tokens)
};
템플릿을 사용하여 전자 메일 보내기
이 코드 조각은 본문의 템플릿 토큰을 사용하여 이메일을 보내는 방법을 보여 줍니다.
BodyTemplateFilePath
속성을 설정할 때, 템플릿 파일의 내용이 본문에 복사되므로 Body 속성 값을 제공할 필요가 없습니다.
new SendMail
{
From = new LambdaValue<MailAddress>(ctx => new MailAddress("john.doe@contoso.com")),
To = new LambdaValue<MailAddressCollection>(
ctx => new MailAddressCollection() { new MailAddress("someone@microsoft.com") }),
Subject = "Test email",
Host = "localhost",
Port = 25,
Tokens = new LambdaValue<IDictionary<string, string>>(ctx => tokens),
BodyTemplateFilePath = @"..\..\..\SendMail\Templates\MailTemplateBody.htm",
};
테스트 모드에서 메일 보내기
이 코드 조각은 두 가지 테스트 속성을 설정하는 방법을 보여 줍니다. TestMailTo
을 설정하면 받는 사람(To), 참조(Cc), 숨은 참조(Bcc) 값을 무시하고 모든 메시지가 john.doe@contoso.con
으로 전송됩니다. TestDropPath를 설정하면 보내는 모든 전자 메일도 제공된 경로에 기록됩니다. 이러한 속성은 독립적으로 설정할 수 있습니다(관련되지 않음).
new SendMail
{
From = new LambdaValue<MailAddress>(ctx => new MailAddress("john.doe@contoso.com")),
To = new LambdaValue<MailAddressCollection>(
ctx => new MailAddressCollection() { new MailAddress("someone@microsoft.com") }),
Subject = "Test email",
Host = "localhost",
Port = 25,
Tokens = new LambdaValue<IDictionary<string, string>>(ctx => tokens),
BodyTemplateFilePath = @"..\..\..\SendMail\Templates\MailTemplateBody.htm",
TestMailTo= new LambdaValue<MailAddress>(ctx => new MailAddress("john.doe@contoso.com")),
TestDropPath = @"c:\Samples\SendMail\TestDropPath\",
};
Set-Up 지침
이 샘플에서는 SMTP 서버에 액세스해야 합니다.
SMTP 서버 설정에 대한 자세한 내용은 다음 링크를 참조하세요.
타사에서 제공하는 SMTP 에뮬레이터를 다운로드할 수 있습니다.
이 샘플을 실행하려면
Visual Studio를 사용하여 SendMail.sln 솔루션 파일을 엽니다.
유효한 SMTP 서버에 액세스할 수 있는지 확인합니다. 설정 지침을 참조하세요.
당신의 서버 주소와 발신 이메일 주소 및 수신 이메일 주소를 사용하여 프로그램을 구성합니다.
이 샘플을 올바르게 실행하려면 Program.cs 및 Sequence.xaml에서 보낸 사람 및 전자 메일 주소의 값과 SMTP 서버의 주소를 구성해야 할 수 있습니다. 프로그램에서 두 가지 방법으로 메일을 보내므로 두 위치에서 주소를 변경해야 합니다.
Ctrl+Shift+B를 눌러 솔루션을 빌드합니다.
솔루션을 실행하려면 Ctrl+F5를 누릅니다.
.NET