Delen via


Aangepaste activiteit SendMail

In het voorbeeld SendMail ziet u hoe u een aangepaste activiteit maakt die is afgeleid van AsyncCodeActivity het verzenden van e-mail met SMTP voor gebruik in een werkstroomtoepassing. De aangepaste activiteit maakt gebruik van de mogelijkheden voor het asynchroon verzenden van e-mail en voor het verzenden van SmtpClient e-mail met verificatie. Het biedt ook enkele functies van eindgebruikers, zoals testmodus, vervanging van tokens, bestandssjablonen en het vervolgkeuzepad voor testen.

In de volgende tabel worden de argumenten voor de SendMail activiteit weergegeven.

Name Type Description
Host String Adres van de SMTP-serverhost.
Poort String Poort van de SMTP-service in de host.
EnableSsl bool Hiermee geeft u op of ssl SmtpClient (Secure Sockets Layer) wordt gebruikt om de verbinding te versleutelen.
Gebruikersnaam String Gebruikersnaam voor het instellen van de referenties om de eigenschap van de afzender Credentials te verifiëren.
Wachtwoord String Wachtwoord voor het instellen van de referenties om de eigenschap afzender Credentials te verifiëren.
Onderwerp InArgument<T><Tekenreeks> Onderwerp van het bericht.
Hoofdgedeelte InArgument<T><Tekenreeks> Hoofdtekst van het bericht.
Bijlagen InArgument<T><Tekenreeks> Verzameling bijlagen die worden gebruikt voor het opslaan van gegevens die zijn gekoppeld aan dit e-mailbericht.
Van MailAddress Van adres voor dit e-mailbericht.
Tot InArgument<T><MailAddressCollection> Adresverzameling die de geadresseerden van dit e-mailbericht bevat.
CC InArgument<T><MailAddressCollection> Adresverzameling die de CC-geadresseerden (Carbon Copy) voor dit e-mailbericht bevat.
BCC InArgument<T><MailAddressCollection> Adresverzameling die de BCC-geadresseerden (Blind Carbon Copy) voor dit e-mailbericht bevat.
Tokens InArgument<T><IDictionaire<tekenreeks, tekenreeks>> Tokens die in de hoofdtekst moeten worden vervangen. Met deze functie kunnen gebruikers bepaalde waarden in de hoofdtekst opgeven dan later kan worden vervangen door de tokens die met deze eigenschap worden geleverd.
BodyTemplateFilePath String Pad van een sjabloon voor de hoofdtekst. De SendMail activiteit kopieert de inhoud van dit bestand naar de hoofdteksteigenschap.

De sjabloon kan tokens bevatten die worden vervangen door de inhoud van de eigenschap tokens.
TestMailTo MailAddress Wanneer deze eigenschap is ingesteld, worden alle e-mailberichten verzonden naar het adres dat erin is opgegeven.

Deze eigenschap is bedoeld om te worden gebruikt bij het testen van werkstromen. Als u er bijvoorbeeld voor wilt zorgen dat alle e-mailberichten worden verzonden zonder dat ze naar de werkelijke geadresseerden worden verzonden.
TestDropPath String Wanneer deze eigenschap is ingesteld, worden alle e-mailberichten ook opgeslagen in het opgegeven bestand.

Deze eigenschap is bedoeld om te worden gebruikt wanneer u werkstromen test of foutopsporing uitvoert om ervoor te zorgen dat de indeling en inhoud van de uitgaande e-mailberichten geschikt zijn.

Inhoud van oplossing

De oplossing bevat twee projecten.

Project Beschrijving Belangrijke bestanden
Sendmail De activiteit SendMail 1. SendMail.cs: implementatie voor de hoofdactiviteit
2. SendMailDesigner.xaml en SendMailDesigner.xaml.cs: ontwerper voor de activiteit SendMail
3. MailTemplateBody.htm: sjabloon voor het verzenden van het e-mailbericht.
SendMailTestClient Client om de SendMail-activiteit te testen. Dit project demonstreert twee manieren om de SendMail-activiteit aan te roepen: declaratief en programmatisch. 1. Sequence1.xaml: werkstroom die de SendMail-activiteit aanroept.
2. Program.cs: roept Sequence1 aan en maakt ook programmatisch een werkstroom die gebruikmaakt van SendMail.

Verdere configuratie van de activiteit SendMail

Hoewel deze niet wordt weergegeven in het voorbeeld, kunnen gebruikers de configuratie van de SendMail-activiteit optellen. In de volgende drie secties ziet u hoe dit wordt gedaan.

Een e-mailbericht verzenden met tokens die zijn opgegeven in de hoofdtekst

Dit codefragment laat zien hoe u e-mail kunt verzenden met tokens in de hoofdtekst. U ziet hoe de tokens worden opgegeven in de hoofdteksteigenschap. Waarden voor deze tokens worden verstrekt aan de eigenschap 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)
};

Een e-mailbericht verzenden met behulp van een sjabloon

Dit codefragment laat zien hoe u een e-mailbericht verzendt met behulp van een sjabloontokens in de hoofdtekst. Wanneer u de BodyTemplateFilePath eigenschap instelt, hoeft u de waarde voor de eigenschap Hoofdtekst niet op te geven (de inhoud van het sjabloonbestand wordt gekopieerd naar de hoofdtekst).

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",
};

E-mailberichten verzenden in de testmodus

Dit codefragment laat zien hoe u de twee testeigenschappen instelt: door in te stellen TestMailTo op alle berichten worden verzonden (zonder rekening te houden john.doe@contoso.con met de waarden van Aan, CC, BCC). Door TestDropPath in te stellen, worden alle uitgaande e-mailberichten ook vastgelegd in het opgegeven pad. Deze eigenschappen kunnen onafhankelijk worden ingesteld (ze zijn niet gerelateerd).

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\",
};

Instructies voor instellen

Voor dit voorbeeld is toegang tot een SMTP-server vereist.

Zie de volgende koppelingen voor meer informatie over het instellen van een SMTP-server.

SMTP-emulators die door derden worden geleverd, kunnen worden gedownload.

Dit voorbeeld uitvoeren

  1. Open met Visual Studio het SendMail.sln-oplossingsbestand.

  2. Zorg ervoor dat u toegang hebt tot een geldige SMTP-server. Zie de instructies voor het instellen.

  3. Configureer het programma met uw serveradres en van en naar-e-mailadres.

    Als u dit voorbeeld correct wilt uitvoeren, moet u mogelijk de waarde van van en naar-e-mailadressen en het adres van de SMTP-server configureren in Program.cs en in Sequence.xaml. U moet het adres op beide locaties wijzigen omdat het programma e-mail op twee verschillende manieren verzendt

  4. Druk op Ctrl+Shift+B om de oplossing te bouwen.

  5. Druk op Ctrl+F5 om de oplossing uit te voeren.