Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В примере SendMail показано, как создать настраиваемое действие, которое является производным от AsyncCodeActivity отправки почты с помощью SMTP для использования в приложении рабочего процесса. Настраиваемое действие использует возможности асинхронной отправки электронной почты SmtpClient и отправки почты с проверкой подлинности. Он также предоставляет некоторые функции конечного пользователя, такие как режим тестирования, замена маркеров, шаблоны файлов и путь сброса тестов.
В следующей таблице приведены аргументы для SendMail
действия.
Имя | Тип | Описание |
---|---|---|
Хозяин | Струна | Адрес узла SMTP-сервера. |
Порт | Струна | Порт службы SMTP на узле. |
EnableSsl | булевая переменная (bool) | Указывает, используется ли SmtpClient протокол SSL для шифрования подключения. |
Имя пользователя | Струна | Имя пользователя для настройки учетных данных для проверки подлинности свойства отправителя Credentials . |
Пароль | Струна | Пароль для настройки учетных данных для проверки подлинности свойства отправителя Credentials . |
Тема | InArgument<T> <струна> | Тема сообщения. |
Тело | InArgument<T> <струна> | Текст сообщения. |
Вложения | InArgument<T> <струна> | Коллекция вложений, используемая для хранения данных, присоединенных к этому сообщению электронной почты. |
От | MailAddress | Адрес отправителя для этого сообщения электронной почты. |
Кому | InArgument<T><MailAddressCollection> | Коллекция адресов, содержащая получателей этого сообщения электронной почты. |
КУБОВЫЙ | InArgument<T><MailAddressCollection> | Коллекция адресов, содержащая получателей углеродной копии (CC) для этого сообщения электронной почты. |
BCC | InArgument<T><MailAddressCollection> | Коллекция адресов, содержащая получателей слепой углеродной копии (BCC) для этого сообщения электронной почты. |
Токены | InArgument<T> <Строка IDictionary<, строка>> | Маркеры для замены в тексте. Эта функция позволяет пользователям указывать некоторые значения в теле, которые можно будет заменить позже маркерами, предоставленными с помощью этого свойства. |
BodyTemplateFilePath | Струна | Путь к шаблону для основного текста. Действие SendMail копирует содержимое этого файла в свойство 'body'.Шаблон может содержать токены, которые заменяются содержимым свойства токенов. |
TestMailTo | MailAddress | Если это свойство задано, все сообщения электронной почты отправляются на адрес, указанный в нем. Это свойство предназначено для использования при тестировании рабочих процессов. Например, если вы хотите убедиться, что все сообщения электронной почты отправляются без отправки их фактическим получателям. |
TestDropPath | Струна | Если это свойство задано, все сообщения электронной почты также сохраняются в указанном файле. Это свойство предназначено для использования при тестировании или отладке рабочих процессов, чтобы убедиться, что формат и содержимое исходящих сообщений электронной почты соответствуют требованиям. |
Содержимое решения
Решение содержит два проекта.
Проект | Описание | Важные файлы |
---|---|---|
ОтправитьПочту | Действие SendMail | 1. SendMail.cs: реализация для основного действия 2. SendMailDesigner.xaml и SendMailDesigner.xaml.cs: конструктор для действия SendMail 3. MailTemplateBody.htm: шаблон для отправки сообщения электронной почты. |
Клиент для тестирования отправки почты | Клиент для тестирования действия SendMail. Этот проект демонстрирует два способа вызова действия SendMail: декларативно и программно. | 1. Sequence1.xaml: рабочий процесс, вызывающий действие SendMail. 2. Program.cs: вызывает Sequence1, а также создает рабочий процесс программным способом, использующим SendMail. |
Дальнейшая настройка действия SendMail
Хотя в примере не показано, пользователи могут выполнять дополнительную настройку активности SendMail. В следующих трех разделах показано, как это сделать.
Отправка сообщения электронной почты с помощью маркеров, указанных в теле письма
В этом фрагменте кода показано, как отправлять сообщения электронной почты с маркерами в тексте. Обратите внимание, как токены предоставляются в свойстве 'body'. Значения этих токенов предоставляются свойству 'токены'.
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
, все сообщения будут отправлены на john.doe@contoso.con
(без учета значений To, Cc, Bcc). При установке 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, предоставляемые сторонними сторонами, доступны для скачивания.
Чтобы запустить этот пример
Откройте файл решения SendMail.sln с помощью Visual Studio.
Убедитесь, что у вас есть доступ к допустимому SMTP-серверу. См. инструкции по настройке.
Настройте программу с адресом сервера и адресами электронной почты отправителя и получателя.
Чтобы правильно выполнить этот пример, может потребоваться настроить значения адресов электронной почты from and To и SMTP-сервера в Program.cs и в Sequence.xaml. Вам потребуется изменить адрес в обоих расположениях, так как программа отправляет почту двумя разными способами.
Для построения решения нажмите CTRL+SHIFT+B.
Чтобы запустить решение, нажмите клавиши CTRL+F5.