Sdílet prostřednictvím


Vlastní aktivita SendMail

Ukázka SendMail ukazuje, jak vytvořit vlastní aktivitu, která je odvozena od AsyncCodeActivity odesílání pošty pomocí SMTP pro použití v aplikaci pracovního postupu. Vlastní aktivita využívá schopnosti SmtpClient k asynchronnímu odesílání e-mailů a k jejich odesílání s autentizací. Poskytuje také některé funkce koncového uživatele, jako je testovací režim, výměna tokenů, šablony souborů a cesta pro vyřazení testu.

Následující tabulka podrobně popisuje argumenty aktivity SendMail .

Název Typ Popis
Hostitel Řetězec Adresa hostitele serveru SMTP.
Přístav Řetězec Port služby SMTP v hostiteli.
EnableSsl Booleova hodnota Určuje, jestli SmtpClient k šifrování připojení používá protokol SSL (Secure Sockets Layer).
Uživatelské jméno Řetězec Uživatelské jméno pro nastavení přihlašovacích údajů pro ověření vlastnosti odesílatele Credentials .
Heslo Řetězec Heslo pro nastavení přihlašovacích údajů pro ověření vlastnosti odesílatele Credentials .
Předmět InArgument<T> <řetězec> Předmět zprávy
Tělo InArgument<T> <řetězec> Text zprávy.
Přílohy InArgument<T> <řetězec> Kolekce příloh sloužící k ukládání dat připojených k této e-mailové zprávě
Od MailAddress Adresa odesílatele pro tuto e-mailovou zprávu.
Do InArgument<T><MailAddressCollection> Kolekce adres, která obsahuje příjemce této e-mailové zprávy.
CC InArgument<T><MailAddressCollection> Kolekce adres, která obsahuje příjemce kopie (CC) pro tuto e-mailovou zprávu.
SKRYTÁ KOPIE InArgument<T><MailAddressCollection> Kolekce adres obsahující příjemce skryté kopie (BCC) pro tuto e-mailovou zprávu.
Tokény InArgument<T> <Řetězec slovníku<, řetězec>> Tokeny, které se mají nahradit v těle. Tato funkce umožňuje uživatelům zadat některé hodnoty do obsahu, které pak mohou být nahrazeny tokeny poskytnutými pomocí této vlastnosti.
BodyTemplateFilePath Řetězec Cesta k šabloně těla Aktivita SendMail zkopíruje obsah tohoto souboru do své vlastnosti.

Šablona může obsahovat tokeny, které jsou nahrazeny obsahem vlastnosti tokens.
TestMailTo MailAddress Pokud je tato vlastnost nastavena, všechny e-maily se posílají na adresu uvedenou v ní.

Tato vlastnost je určena k použití při testování pracovních postupů. Pokud například chcete zajistit, aby se všechny e-maily odesílaly, aniž by se odesílaly skutečným příjemcům.
TestDropPath Řetězec Při nastavení této vlastnosti se všechny e-maily uloží také do zadaného souboru.

Tato vlastnost se má použít při testování nebo ladění pracovních postupů, aby se zajistilo, že je vhodný formát a obsah odchozích e-mailů.

Obsah řešení

Řešení obsahuje dva projekty.

Projekt Popis Důležité soubory
Odeslat poštu Aktivita SendMail 1. SendMail.cs: provádění hlavní činnosti
2. SendMailDesigner.xaml a SendMailDesigner.xaml.cs: návrhář aktivity SendMail
3. MailTemplateBody.htm: šablona pro odeslání e-mailu.
SendMailTestClient (Klient pro testování zasílání e-mailů) Klient k otestování aktivity SendMail. Tento projekt ukazuje dva způsoby volání aktivity SendMail: deklarativní a programově. 1. Sequence1.xaml: pracovní postup, který vyvolá aktivitu SendMail.
2. Program.cs: vyvolá Sequence1 a také vytvoří pracovní postup programově, který používá SendMail.

Další konfigurace aktivity SendMail

I když se v ukázce nezobrazuje, uživatelé mohou provádět další konfiguraci aktivity SendMail. Následující tři části ukazují, jak se to dělá.

Odeslání e-mailu pomocí tokenů zadaných v textu

Tento fragment kódu ukazuje, jak můžete odesílat e-maily s tokeny v těle. Všimněte si, jak jsou tokeny k dispozici v základní vlastnosti. Hodnoty pro tyto tokeny jsou poskytovány do vlastnosti 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)
};

Odeslání e-mailu pomocí šablony

Tento fragment kódu ukazuje, jak odeslat e-mail pomocí tokenů šablony v textu. Všimněte si, že při nastavování vlastnosti BodyTemplateFilePath nemusíme zadat hodnotu pro vlastnost Body (obsah souboru šablony se zkopíruje do textu těla).

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

Odesílání pošty v testovacím režimu

Tento fragment kódu ukazuje, jak nastavit dvě testovací vlastnosti: nastavením TestMailTo budou všechny zprávy odeslány na adresu john.doe@contoso.con (bez ohledu na hodnoty Komu, Kopie, Skrytá kopie). Nastavením TestDropPath budou všechny odchozí e-maily zaznamenány také v zadané cestě. Tyto vlastnosti lze nastavit nezávisle (nesouvisejí).

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

pokyny pro Set-Up

Pro tuto ukázku je vyžadován přístup k serveru SMTP.

Další informace o nastavení serveru SMTP najdete na následujících odkazech.

Emulátory SMTP poskytované třetími stranami jsou k dispozici ke stažení.

Spuštění této ukázky

  1. Ve Visual Studiu otevřete soubor řešení SendMail.sln.

  2. Ujistěte se, že máte přístup k platnému serveru SMTP. Viz pokyny k nastavení.

  3. Nakonfigurujte program s adresou serveru a adresami e-mailu „Od“ a „Do“.

    Abyste mohli tuto ukázku správně spustit, možná budete muset nakonfigurovat hodnotu od a do e-mailových adres a adresu serveru SMTP v Program.cs a v sequence.xaml. Adresu budete muset změnit v obou umístěních, protože program odesílá poštu dvěma různými způsoby.

  4. Řešení sestavíte stisknutím kombinace kláves CTRL+SHIFT+B.

  5. Řešení spustíte stisknutím kombinace kláves CTRL+F5.