Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Ve Visual Studiu otevřete soubor řešení SendMail.sln.
Ujistěte se, že máte přístup k platnému serveru SMTP. Viz pokyny k nastavení.
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.
Řešení sestavíte stisknutím kombinace kláves CTRL+SHIFT+B.
Řešení spustíte stisknutím kombinace kláves CTRL+F5.