Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O exemplo SendMail demonstra como criar uma atividade personalizada que deriva de AsyncCodeActivity para enviar o email usando SMTP no contexto de uma aplicação de fluxo de trabalho. A atividade personalizada usa os recursos de enviar e-mails de SmtpClient forma assíncrona e enviar e-mails com autenticação. Também oferece alguns recursos para o utilizador final, como modo de teste, substituição de tokens, modelos de ficheiro e caminho para descarte de testes.
A tabela a seguir detalha os argumentos para a SendMail
atividade.
Nome | Tipo | Descrição |
---|---|---|
Anfitrião | Cordão | Endereço do host do servidor SMTP. |
Porto | Cordão | Porta do serviço SMTP no host. |
EnableSsl | Bool | Especifica se o SmtpClient usa SSL (Secure Sockets Layer) para criptografar a conexão. |
Nome de Utilizador | Cordão | Nome de usuário para configurar as credenciais para autenticar a propriedade sender Credentials . |
Palavra-passe | Cordão | Palavra-passe para configurar as credenciais para autenticar a propriedade do remetente Credentials. |
Assunto | InArgument<T> <string> | Assunto da mensagem. |
Corpo | InArgument<T> <string> | Corpo da mensagem. |
Anexos | InArgument<T> <string> | Coleção de anexos usada para armazenar dados anexados a esta mensagem de e-mail. |
De | MailAddress | Endereço de origem para esta mensagem de e-mail. |
Para | InArgument<T><MailAddressCollection> | Coleção de endereços que contém os destinatários desta mensagem de email. |
CC | InArgument<T><MailAddressCollection> | Coleção de endereços que contém os destinatários da cópia carbono (CC) para esta mensagem de e-mail. |
CBC | InArgument<T><MailAddressCollection> | Coleção de endereços que contém os destinatários de cópia oculta (BCC) para esta mensagem de email. |
Símbolos | InArgument<T> <Cadeia de caracteres IDictionary<, string>> | Tokens para substituir no corpo. Esse recurso permite que os usuários especifiquem alguns valores no corpo que podem ser substituídos posteriormente pelos tokens fornecidos usando essa propriedade. |
BodyTemplateFilePath | Cordão | Caminho de um esquema para o corpo. A SendMail atividade copia o conteúdo desse arquivo para sua propriedade body.O modelo pode conter marcadores que são substituídos pelo conteúdo da propriedade dos marcadores. |
TestMailTo | MailAddress | Quando esta propriedade é definida, todos os e-mails são enviados para o endereço especificado nela. Esta propriedade destina-se a ser usada ao testar fluxos de trabalho. Por exemplo, quando você deseja ter certeza de que todos os e-mails são enviados sem enviá-los para os destinatários reais. |
TestDropPath | Cordão | Quando essa propriedade é definida, todos os e-mails também são salvos no arquivo especificado. Esta propriedade destina-se a ser usada quando você estiver testando ou depurando fluxos de trabalho, para garantir que o formato e o conteúdo dos e-mails enviados sejam apropriados. |
Conteúdo da solução
A solução contém dois projetos.
Projeto | Descrição | Arquivos importantes |
---|---|---|
Enviar Correio | A atividade SendMail | 1. SendMail.cs: implementação para a atividade principal 2. SendMailDesigner.xaml e SendMailDesigner.xaml.cs: designer para a atividade SendMail 3. MailTemplateBody.htm: modelo para o e-mail a ser enviado. |
SendMailTestClient | Cliente para testar a atividade SendMail. Este projeto demonstra duas maneiras de invocar a atividade SendMail: declarativamente e programaticamente. | 1. Sequence1.xaml: fluxo de trabalho que invoca a atividade SendMail. 2. Program.cs: invoca Sequence1 e também cria um fluxo de trabalho programaticamente que usa SendMail. |
Configuração adicional da atividade SendMail
Embora não seja mostrado no exemplo, os usuários podem executar a configuração de adição da atividade SendMail. As próximas três seções demonstram como isso é feito.
Enviar um e-mail usando tokens especificados no corpo
Este trecho de código demonstra como você pode enviar e-mails com tokens no corpo. Observe como os tokens são fornecidos na propriedade 'body'. Os valores para esses tokens são fornecidos na propriedade de tokens.
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)
};
Enviar um e-mail usando um modelo
Este trecho mostra como enviar um e-mail usando tokens de modelo no corpo do e-mail. Observe que, ao definir a BodyTemplateFilePath
propriedade, não precisamos fornecer o valor para a propriedade Body (o conteúdo do arquivo de modelo será copiado para o corpo).
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",
};
Enviando e-mails no modo de teste
Este trecho de código mostra como definir as duas propriedades de teste: definindo TestMailTo
para todas as mensagens serão enviadas para john.doe@contoso.con
(sem considerar os valores de Para, Cc, Bcc). Ao definir TestDropPath, todos os e-mails enviados também serão registrados no caminho fornecido. Estas propriedades podem ser definidas de forma independente (não estão relacionadas).
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 Instruções
O acesso a um servidor SMTP é necessário para este exemplo.
Para obter mais informações sobre como configurar um servidor SMTP, consulte os links a seguir.
Emuladores SMTP fornecidos por terceiros estão disponíveis para download.
Para executar este exemplo
Usando o Visual Studio, abra o arquivo de solução SendMail.sln.
Certifique-se de que tem acesso a um servidor SMTP válido. Consulte as instruções de configuração.
Configure o programa com o endereço do servidor e os endereços de e-mail "From" e "To".
Para executar corretamente este exemplo, talvez seja necessário configurar o valor dos endereços de email De e Para e o endereço do servidor SMTP no Program.cs e em Sequence.xaml. Você precisará alterar o endereço em ambos os locais, uma vez que o programa envia e-mail de duas maneiras diferentes
Para criar a solução, pressione CTRL+SHIFT+B.
Para executar a solução, pressione CTRL+F5.