Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nell'esempio SendMail viene illustrato come creare un'attività personalizzata che deriva da AsyncCodeActivity per inviare messaggi di posta elettronica usando SMTP per l'uso all'interno di un'applicazione flusso di lavoro. L'attività personalizzata usa le funzionalità di SmtpClient per inviare posta elettronica in modo asincrono e per inviare messaggi di posta elettronica con l'autenticazione. Fornisce anche alcune funzionalità dell'utente finale, ad esempio la modalità di test, la sostituzione dei token, i modelli di file e il percorso di rilascio dei test.
La tabella seguente illustra in dettaglio gli argomenti per l'attività SendMail
.
Nome | TIPO | Descrizione |
---|---|---|
Padrone di casa / Ospitante / Conduttore (depending on the intended context) | Stringa | Indirizzo dell'host del server SMTP. |
Porto | Stringa | Porta del servizio di protocollo di trasferimento della posta (SMTP) nell'host. |
EnableSsl | Bool | Specifica se SmtpClient usa Secure Sockets Layer (SSL) per crittografare la connessione. |
Nome utente | Stringa | Nome utente per configurare le credenziali per autenticare la proprietà sender Credentials . |
Parola chiave | Stringa | Password per configurare le credenziali per autenticare la proprietà sender Credentials . |
Oggetto | InArgument<T> <stringa> | Oggetto del messaggio. |
Corpo | InArgument<T> <stringa> | Corpo del messaggio. |
Allegati | InArgument<T> <stringa> | Raccolta di allegati utilizzata per archiviare i dati allegati a questo messaggio di posta elettronica. |
Da | MailAddress | Indirizzo di provenienza per questo messaggio di posta elettronica. |
Per | InArgument<T><MailAddressCollection> | Raccolta di indirizzi che contiene i destinatari del messaggio di posta elettronica. |
CC | InArgument<T><MailAddressCollection> | Raccolta di indirizzi che contiene i destinatari della copia di carbonio (CC) per questo messaggio di posta elettronica. |
CCN | InArgument<T><MailAddressCollection> | Raccolta di indirizzi che contiene i destinatari della copia di carbonio cieco (BCC) per questo messaggio di posta elettronica. |
Token | InArgument<T> <Stringa IDictionary<, stringa>> | Token da sostituire nel corpo. Questa funzionalità consente agli utenti di specificare alcuni valori nel corpo che possono essere sostituiti in un secondo momento dai token forniti usando questa proprietà. |
BodyTemplateFilePath | Stringa | Percorso di un modello per il corpo. L'attività SendMail copia il contenuto di questo file nella proprietà 'body'.Il modello può contenere token sostituiti dal contenuto della proprietà tokens. |
TestMailTo | MailAddress | Quando questa proprietà è impostata, tutti i messaggi di posta elettronica vengono inviati all'indirizzo specificato. Questa proprietà deve essere usata durante il test dei flussi di lavoro. Ad esempio, quando si vuole assicurarsi che tutti i messaggi di posta elettronica vengano inviati senza inviarli ai destinatari effettivi. |
TestDropPath | Stringa | Quando questa proprietà è impostata, tutti i messaggi di posta elettronica vengono salvati anche nel file specificato. Questa proprietà deve essere usata durante il test o il debug dei flussi di lavoro, per assicurarsi che il formato e il contenuto dei messaggi di posta elettronica in uscita siano appropriati. |
Contenuto della soluzione
La soluzione contiene due progetti.
Progetto | Descrizione | File importanti |
---|---|---|
SendMail | Attività SendMail | 1. SendMail.cs: implementazione per l'attività principale 2. SendMailDesigner.xaml e SendMailDesigner.xaml.cs: strumenti di progettazione per l'attività SendMail 3. MailTemplateBody.htm: modello per l'invio del messaggio di posta elettronica. |
SendMailTestClient | Client per testare l'attività SendMail. Questo progetto illustra due modi per richiamare l'attività SendMail: in modo dichiarativo e a livello di codice. | 1. Sequence1.xaml: flusso di lavoro che richiama l'attività SendMail. 2. Program.cs: richiama Sequence1 e crea anche un flusso di lavoro a livello di codice che usa SendMail. |
Ulteriore configurazione dell'attività SendMail
Anche se non illustrato nell'esempio, gli utenti possono eseguire una configurazione aggiuntiva dell'attività SendMail. Le tre sezioni successive illustrano come viene eseguita questa operazione.
Invio di un messaggio di posta elettronica tramite token specificati nel corpo
Questo frammento di codice illustra come inviare messaggi di posta elettronica con token nel corpo. Si noti che i token vengono forniti nella proprietà body. I valori per tali token vengono forniti alla proprietà dei token.
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)
};
Invio di un messaggio di posta elettronica tramite un modello
Questo frammento di codice illustra come inviare un messaggio di posta elettronica usando token modello nel corpo. Si noti che quando si imposta la BodyTemplateFilePath
proprietà non è necessario fornire il valore per la proprietà Body (il contenuto del file modello verrà copiato nel 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",
};
Invio di messaggi di posta elettronica in modalità di test
Questo frammento di codice mostra come impostare le due proprietà di test: impostando TestMailTo
, tutti i messaggi verranno inviati a john.doe@contoso.con
(ignorando i valori di A:, Cc, Ccn). Impostando TestDropPath, tutti i messaggi di posta elettronica in uscita verranno registrati anche nel percorso specificato. Queste proprietà possono essere impostate in modo indipendente (non sono correlate).
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\",
};
istruzioni Set-Up
L'accesso a un server SMTP è necessario per questo esempio.
Per altre informazioni sulla configurazione di un server SMTP, vedere i collegamenti seguenti.
Gli emulatori SMTP forniti da terze parti sono disponibili per il download.
Per eseguire questo esempio
Usando Visual Studio, aprire il file della soluzione SendMail.sln.
Assicurarsi di avere accesso a un server SMTP valido. Vedere le istruzioni di configurazione.
Configura il programma con l'indirizzo del server e gli indirizzi email di partenza e di destinazione.
Per eseguire correttamente questo esempio, potrebbe essere necessario configurare il valore di Indirizzi di posta elettronica Da e A e l'indirizzo del server SMTP in Program.cs e in Sequence.xaml. Sarà necessario modificare l'indirizzo in entrambe le posizioni perché il programma invia posta in due modi diversi
Per compilare la soluzione, premere CTRL+MAIUSC+B.
Per eseguire la soluzione, premere CTRL+F5.