Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A SendMail-minta bemutatja, hogyan hozhat létre olyan egyéni tevékenységet, amely abból AsyncCodeActivity ered, hogy smtp használatával küld e-maileket a munkafolyamat-alkalmazáson belül való használatra. Az egyéni tevékenység az e-mailek aszinkron küldésének és a hitelesítéssel történő e-mailek küldésének képességeivel SmtpClient rendelkezik. Emellett olyan végfelhasználói funkciókat is biztosít, mint a teszt mód, a tokenek cseréje, a fájlsablonok és a teszt elérési út.
Az alábbi táblázat a tevékenység argumentumait SendMail ismerteti.
| Név | Típus | Leírás |
|---|---|---|
| Gazda | Lánc | Az SMTP-kiszolgáló gazdagépének címe. |
| Kikötő | Lánc | Az SMTP-szolgáltatás portja a gazdagépen. |
| EnableSsl | Bool | Megadja, hogy a SmtpClient kapcsolat titkosítása a Secure Sockets Layer (SSL) használatával legyen-e megadva. |
| UserName | Lánc | Felhasználónév a hitelesítő adatok beállításához a feladó Credentials tulajdonság hitelesítéséhez. |
| Jelszó | Lánc | Jelszó a hitelesítő adatok beállításához a feladó Credentials tulajdonság hitelesítéséhez. |
| Tárgy | InArgument<T> <karaktersorozat> | Az üzenet tárgya. |
| Törzs | InArgument<T> <karaktersorozat> | Az üzenet törzse. |
| Mellékletek | InArgument<T> <karaktersorozat> | Az e-mailhez csatolt adatok tárolására szolgáló mellékletgyűjtemény. |
| Ettől kezdve | MailAddress | Az e-mail üzenet feladójának címe. |
| Há | InArgument<T><MailAddressCollection> | Az e-mail címzettjeinek címgyűjteménye. |
| felirat | InArgument<T><MailAddressCollection> | Az e-mail üzenethez tartozó, másolatot kapó (CC) címzetteket tartalmazó címgyűjtemény. |
| BCC | InArgument<T><MailAddressCollection> | Olyan címgyűjtemény, amely tartalmazza az e-mail üzenet vakmásolati (BCC) címzettjeit. |
| tokenek | A törzsben lecserélendő tokenek. Ez a funkció lehetővé teszi a felhasználók számára, hogy a törzsben megadjanak bizonyos értékeket, amelyeket később lecserélhetnek az ezzel a tulajdonsággal biztosított tokenekkel. | |
| BodyTemplateFilePath | Lánc | A törzs sablonjának elérési útja. A SendMail tevékenység ennek a fájlnak a tartalmát a törzstulajdonságára másolja.A sablon tartalmazhat olyan tokeneket, amelyeket a tokenek tulajdonságának tartalma vált fel. |
| TestMailTo | MailAddress | Ha ez a tulajdonság be van állítva, a rendszer minden e-mailt a benne megadott címre küld. Ez a tulajdonság a munkafolyamatok teszteléséhez használható. Ha például meg szeretné győződni arról, hogy az összes e-mailt a tényleges címzetteknek való küldés nélkül küldi el a rendszer. |
| TestDropPath | Lánc | Ha ez a tulajdonság be van állítva, a rendszer az összes e-mailt a megadott fájlba is menti. Ez a tulajdonság a munkafolyamatok tesztelése vagy hibakeresése során használható, hogy a kimenő e-mailek formátuma és tartalma megfelelő legyen. |
Megoldás tartalma
A megoldás két projektet tartalmaz.
| Projekt | Leírás | Fontos fájlok |
|---|---|---|
| Levélküldés | A SendMail tevékenység | 1. SendMail.cs: a fő tevékenység megvalósítása 2. SendMailDesigner.xaml és SendMailDesigner.xaml.cs: a SendMail tevékenység tervezője 3. MailTemplateBody.htm: a küldendő e-mail sablonja. |
| SendMailTesztKliens | Ügyfél a SendMail-tevékenység teszteléséhez. Ez a projekt két módszert mutat be a SendMail-tevékenység meghívására: deklaratív módon és programozott módon. | 1. Sequence1.xaml: a SendMail tevékenységet meghívó munkafolyamat. 2. Program.cs: meghívja a Sequence1-et, és létrehoz egy, a SendMailt használó munkafolyamatot is programozott módon. |
A SendMail-tevékenység további konfigurációja
Bár a mintában nem jelenik meg, a felhasználók elvégezhetik a SendMail-tevékenység konfigurálását. A következő három szakasz bemutatja, hogyan történik ez.
E-mail küldése a szövegben megadott tokenekkel
Ez a kódrészlet bemutatja, hogyan küldhet e-maileket tokenekkel az e-mail szövegében. Figyelje meg, ahogyan a tokenek meg vannak adva a törzselemben. A tokenek értékeit a tokenek tulajdonság adja meg.
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)
};
E-mail küldése sablonnal
Ez a kódrészlet bemutatja, hogyan küldhet e-mailt sablontokenek használatával a törzsben. Figyelje meg, hogy a BodyTemplateFilePath tulajdonság beállításakor nem kell megadni a Body tulajdonság értékét (a sablonfájl tartalma a törzsbe lesz másolva).
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",
};
Levelek küldése tesztelési módban
Ez a kódrészlet bemutatja, hogyan állíthatja be a két tesztelési tulajdonságot: az összes üzenet a TestMailTo címre lesz elküldve, függetlenül attól, hogy mi van beállítva a Címzett, Másolatot kap és Titkos másolat mezőkben. A TestDropPath beállításával az összes kimenő e-mail rögzítve lesz a megadott elérési úton is. Ezek a tulajdonságok egymástól függetlenül állíthatók be (nem kapcsolódnak egymáshoz).
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 utasítások
Ehhez a mintához hozzá kell férni egy SMTP-kiszolgálóhoz.
Az SMTP-kiszolgáló beállításával kapcsolatos további információkért tekintse meg az alábbi hivatkozásokat.
A harmadik felek által biztosított SMTP-emulátorok letölthetők.
A minta futtatása
A Visual Studio használatával nyissa meg a SendMail.sln megoldásfájlt.
Győződjön meg arról, hogy rendelkezik érvényes SMTP-kiszolgálóval. Tekintse meg a beállítási utasításokat.
Konfigurálja a programot a kiszolgáló címével, valamint a Feladó és a Címzett e-mail-címekkel.
A minta megfelelő futtatásához konfigurálnia kell a Feladó és a Címzett e-mail-címek értékét, valamint az SMTP-kiszolgáló címét a Program.cs és a Sequence.xaml fájlban. Mindkét helyen módosítania kell a címet, mivel a program kétféleképpen küld e-mailt
A megoldás létrehozásához nyomja le a CTRL+SHIFT+B billentyűkombinációt.
A megoldás futtatásához nyomja le a CTRL+F5 billentyűkombinációt.