Aktivitas Kustom dari SendMail

Sampel SendMail menunjukkan cara membuat aktivitas kustom yang berasal dari AsyncCodeActivity untuk mengirim email menggunakan SMTP untuk digunakan dalam aplikasi alur kerja. Aktivitas kustom menggunakan kemampuan SmtpClient untuk mengirim email secara asinkron dan mengirim email dengan autentikasi. Ini juga menyediakan beberapa fitur pengguna akhir seperti mode pengujian, penggantian token, templat file, dan jalur uji drop.

Tabel berikut merinci argumen untuk aktivitas tersebut SendMail .

Nama Tipe Deskripsi
Pembawa acara string Alamat untuk host server SMTP.
Pelabuhan string Port layanan SMTP di host.
EnableSsl bool Menentukan apakah SmtpClient menggunakan Secure Sockets Layer (SSL) untuk mengenkripsi koneksi.
Nama Pengguna string Nama pengguna untuk menyiapkan kredensial untuk mengautentikasi properti pengirim Credentials .
Kata sandi string Kata sandi untuk menyiapkan kredensial untuk mengautentikasi properti pengirim Credentials .
Subyek InArgument<T> <String> Subjek pesan.
Tubuh InArgument<T> <String> Isi pesan.
Lampiran InArgument<T> <String> Pengumpulan lampiran digunakan untuk menyimpan data yang dilampirkan ke pesan email ini.
Dari MailAddress Alamat asal untuk pesan email ini.
Untuk InArgument<T><MailAddressCollection> Kumpulan alamat yang berisi penerima pesan email ini.
CC InArgument<T><MailAddressCollection> Kumpulan alamat yang berisi penerima salinan karbon (CC) untuk pesan email ini.
BCC InArgument<T><MailAddressCollection> Kumpulan alamat yang berisi penerima salinan karbon buta (BCC) untuk pesan email ini.
Beberapa Token IDictionary Token untuk diganti dalam isi. Fitur ini memungkinkan pengguna untuk menentukan beberapa nilai dalam isi daripada dapat diganti nanti oleh token yang disediakan menggunakan properti ini.
BodyTemplateFilePath string Jalur templat untuk badan. Aktivitas SendMail menyalin isi file ini ke properti body-nya.

Template tersebut dapat berisi token yang digantikan dengan isi dari properti token.
TestMailTo MailAddress Ketika properti ini diatur, semua email dikirim ke alamat yang ditentukan di dalamnya.

Properti ini dimaksudkan untuk digunakan saat menguji alur kerja. Misalnya, ketika Anda ingin memastikan bahwa semua email dikirim tanpa mengirimkannya ke penerima yang sebenarnya.
TestDropPath string Ketika properti ini diatur, semua email juga disimpan dalam file yang ditentukan.

Properti ini dimaksudkan untuk dipakai ketika Anda sedang melakukan pengujian atau peninjauan kembali alur kerja, guna memastikan bahwa format dan konten email yang dikirim adalah sesuai.

Isi Solusi

Solusinya berisi dua proyek.

Proyek Deskripsi File Penting
Kirim Surat Aktivitas Mengirim Email 1. SendMail.cs: implementasi untuk kegiatan utama
2. SendMailDesigner.xaml dan SendMailDesigner.xaml.cs: perancang untuk aktivitas SendMail
3. MailTemplateBody.htm: templat untuk email yang akan dikirim.
SendMailTestClient Klien untuk menguji aktivitas SendMail. Proyek ini menunjukkan dua cara untuk memanggil aktivitas SendMail: secara deklaratif, dan terprogram. 1. Sequence1.xaml: alur kerja yang memanggil aktivitas SendMail.
2. Program.cs: memanggil Sequence1 dan juga membuat alur kerja secara terprogram yang menggunakan SendMail.

Konfigurasi lebih lanjut aktivitas SendMail

Meskipun tidak ditampilkan dalam sampel, pengguna dapat melakukan konfigurasi penambahan aktivitas SendMail. Tiga bagian berikutnya menunjukkan bagaimana hal ini dilakukan.

Mengirim email menggunakan token yang ditentukan dalam isi

Cuplikan kode ini menunjukkan bagaimana Anda dapat mengirim email dengan token dalam isi. Perhatikan bagaimana token disediakan di properti badan. Nilai untuk token tersebut diberikan ke properti 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)
};

Mengirim email menggunakan templat

Cuplikan ini menunjukkan cara mengirim email menggunakan token templat dalam isi. Perhatikan bahwa saat mengatur BodyTemplateFilePath properti, kita tidak perlu memberikan nilai untuk properti Isi (konten file templat akan disalin ke isi).

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

Mengirim Email dalam Mode Pengujian

Cuplikan kode ini menunjukkan cara mengatur dua properti pengujian: dengan menetapkan TestMailTo, semua pesan akan dikirim ke john.doe@contoso.con tanpa memperhatikan nilai pada kolom Kepada, Cc, dan Bcc. Dengan mengatur TestDropPath semua email keluar juga akan direkam di jalur yang disediakan. Properti ini dapat diatur secara mandiri (tidak saling berkaitan).

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

Instruksi Set-Up

Akses ke server SMTP diperlukan untuk sampel ini.

Untuk informasi selengkapnya tentang menyiapkan server SMTP, lihat tautan berikut ini.

Emulator SMTP yang disediakan oleh pihak ketiga tersedia untuk diunduh.

Untuk menjalankan sampel ini

  1. Menggunakan Visual Studio, buka file solusi SendMail.sln.

  2. Pastikan Anda memiliki akses ke server SMTP yang valid. Lihat instruksi pengaturan.

  3. Konfigurasikan program dengan alamat server Anda, serta alamat email dari dan ke.

    Untuk menjalankan sampel ini dengan benar, Anda mungkin perlu mengonfigurasi nilai alamat email Dari dan Ke dan alamat server SMTP di Program.cs dan di Sequence.xaml. Anda harus mengubah alamat di kedua lokasi karena program mengirim email dengan dua cara berbeda

  4. Untuk membangun solusi, tekan CTRL+SHIFT+B.

  5. Untuk menjalankan solusi, tekan CTRL+F5.