Buat Pesan Email dengan Opsi Kustomisasi dalam C#

Buat Pesan Email Baru

Untuk membuat pesan email baru Anda dapat menggunakan MailMessage kelas. Kelas MailMessage juga menginisialisasi properti pesan email yang dibuat seperti alamat email pengirim, alamat email penerima, subjek email, dan konten tubuh email dalam format HTML.

Pertimbangkan kode berikut, dengan langkah-langkah detail, untuk membuat pesan email baru dan mengatur propertinya.

  1. Buat instance baru dari MailMessage kelas.
  2. Setel From properti untuk alamat email pengirim.
  3. Setel Kepada properti untuk daftar alamat email penerima yang dipisahkan koma.
  4. Setel Subject properti untuk subjek email.
  5. Setel HtmlBody properti untuk konten HTML tubuh email.
// Create a new instance of MailMessage class
var message = new MailMessage
{
    From = "from@domain.com",
    To = "to1@domain.com, to2@domain.com",
    Subject = "New message",
    HtmlBody = @"<!DOCTYPE html>
    <html>
     <head>
      <style>
       h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
       p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
         font-weight:normal;color:#000000;background-color:#ffffff;}
      </style>
     </head>
     <body>
       <h3>New message</h3>
       <p>This is a new message created by Aspose.Email.</p>
     </body>
    </html>"
};

Atur Pengkodean Teks Default

Atur pengkodean teks default untuk properti berikut:

  • From: Nama tampilan
  • To: Nama tampilan
  • Subject
  • Body

Gunakan MailMessage.PreferredTextEncoding properti untuk memastikan semua teks dalam properti di atas dienkode dengan benar dalam pesan email. Potongan kode berikut menunjukkan cara menggunakan kata bahasa Prancis sebagai nama tampilan untuk alamat email, subjek, dan isi.

Atur Badan Email

Atur Isi Teks Biasa

Isi email dapat ditentukan menggunakan Body properti dari MailMessage kelas.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    Body = "This is a plain text body"
};

Atur Isi HTML

Isi email juga dapat ditentukan menggunakan HtmlBody properti dari MailMessage kelas.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    HtmlBody = "<html><body>This is the HTML body</body></html>"
};

Atur Teks Alternatif

Tampilan alternatif dalam file EML adalah representasi tambahan dari konten email yang dapat digunakan untuk memberikan tampilan berbeda dari pesan email. Misalnya, jika Anda mengirim pesan dalam HTML, Anda mungkin juga ingin menyediakan versi plain text bila beberapa penerima menggunakan pembaca email yang tidak dapat menampilkan konten HTML. Untuk tujuan itu gunakan AlternateView kelas. Kelas ini memiliki dua properti, LinkedResources dan BaseUri, yang digunakan untuk menyelesaikan URL dalam konten email.

  • LinkedResources adalah koleksi dari LinkedResource objek. Saat dirender, URL dalam konten email pertama-tama dicocokkan dengan URL di Tautan Konten masing‑masing LinkedResource objek dalam LinkedResources koleksi dan diselesaikan.
  • BaseUri digunakan oleh pembaca email untuk menyelesaikan URL relatif di dalam isi, serta untuk menyelesaikan URL Tautan Konten relatif, dalam LinkedResources koleksi.

Pertimbangkan kode berikut dengan langkah‑langkah terperinci untuk mengatur teks alternatif.

  1. Buat sebuah instance dari MailMessage kelas.
  2. Buat AlternateView untuk melihat pesan email menggunakan konten yang ditentukan dalam string.
  3. Tambahkan teks alternatif menggunakan Tambah metode dari MailMessage.AlternateViews koleksi.
// Declare message as MailMessage instance
var eml = new MailMessage();

// Creates AlternateView to view an email message using the content specified in the //string
var alternate = AlternateView.CreateAlternateViewFromString("Alternate Text");

// Adding alternate text
 eml.AlternateViews.Add(alternate);

Tentukan Enkoding Isi Email

Aspose.Email menggunakan  BodyEncoding properti dari MailMessage kelas untuk menentukan enkoding isi email. Contoh:

eml.BodyEncoding = Encoding.UTF8;

Tentukan Beberapa Penerima

Ada tiga cara untuk menentukan penerima pesan email: menggunakan bidang To, CC, atau BCC.

  • Bidang To adalah penerima utama pesan Anda. Anda dapat memasukkan satu atau lebih alamat email dalam bidang ini, dipisahkan dengan koma. Bidang To wajib ada untuk setiap pesan email.

  • Bidang CC merupakan singkatan dari carbon copy. Digunakan untuk mengirim salinan pesan Anda ke orang lain yang tertarik atau terlibat dalam topik. Bidang CC opsional dan dapat berisi beberapa alamat email. Penerima di bidang CC dapat melihat siapa saja yang menerima pesan.

  • Bidang BCC merupakan singkatan dari blind carbon copy. Ini mirip dengan bidang CC, tetapi penerima di bidang BCC disembunyikan dari penerima lainnya. Bidang BCC berguna ketika Anda ingin melindungi privasi beberapa penerima atau menghindari kotak masuk mereka penuh dengan balasan. Bidang BCC juga opsional dan dapat berisi beberapa alamat email.

Pertimbangkan kode berikut, dengan langkah‑langkah terperinci, untuk menentukan beberapa penerima untuk sebuah pesan email.

Langkah kode:

  1. Buat instance baru dari MailMessage kelas.
  2. Setel From properti untuk alamat email pengirim.
  3. Setel Kepada properti ke array alamat email penerima utama.
  4. Setel CC properti ke array alamat email penerima yang akan menerima salinan email.
  5. Setel Bcc properti ke array alamat email penerima yang akan menerima salinan blind carbon copy email.

Contoh kode:

var eml = new MailMessage
{
    // Specify From address
    From = "sender@sender.com",
    //  Specify recipients’ mail addresses
    To = {"receiver1@receiver.com", "receiver2@receiver.com", "receiver3@receiver.com"},
    // Specify CC addresses
    CC = {"CC1@receiver.com", "CC2@receiver.com"},
    // Specify BCC addresses
    Bcc = {"Bcc1@receiver.com", "Bcc2@receiver.com"}
};

Tambahkan Nama Tampilan ke Alamat Email

Selain alamat email, nama tampilan dapat disertakan untuk mengidentifikasi pengirim atau penerima email. Itu bisa mencakup nama lengkap seseorang, nama panggilan, atau pengenal lainnya.

Ketika pesan email ditampilkan di klien email atau antarmuka webmail, nama tampilan biasanya ditampilkan bersama alamat email, memudahkan pengguna mengidentifikasi siapa pengirim pesan atau kepada siapa pesan tersebut ditujukan. Untuk menambahkan nama tampilan ke alamat email dalam sebuah pesan email, pertimbangkan kode berikut dengan langkah‑langkah terperinci:

  1. Muat pesan email dari file menggunakan MailMessage.Load metode.
  2. Atur pengirim email menggunakan From properti dari objek eml dengan membuat yang baru MailAddress objek dengan alamat email dan nama tampilan pengirim.
  3. Tambahkan penerima ke email dengan menggunakan To properti dari objek eml, jika perlu tambahkan daftar CC (Carbon Copy) menggunakan CC properti, daftar BCC (Blind Carbon Copy) menggunakan Bcc properti dan panggil Add metode dengan yang baru MailAddress objek yang berisi alamat email dan nama tampilan penerima.

Contoh kode:

// Load eml from file
var eml = MailMessage.Load(Data.Email/"test.eml");

eml.From = new MailAddress("TimothyFairfield@from.com", "Timothy Fairfield");

// A To address with a friendly name can also be specified like this
eml.To.Add(new MailAddress("kyle@to.com", "Kyle Huang"));

// Specify Cc and Bcc email address along with a friendly name
eml.CC.Add(new MailAddress("guangzhou@cc.com", "Guangzhou Team"));
eml.Bcc.Add(new MailAddress("ahaq@bcc.com", "Ammad ulHaq "));

Atur Properti Tambahan

Dengan Aspose.Email Anda dapat menggunakan properti tambahan dari MailMessage kelas seperti:

  • Date properti - mengatur tanggal dan waktu email. Secara default, tanggal adalah tanggal sebenarnya saat pesan dikirim, dan waktu adalah waktu pengirimannya, seperti yang ditampilkan oleh Microsoft Outlook. Namun, waktu pengiriman email yang sebenarnya ditambahkan oleh server SMTP sendiri dalam header email. Sebagai contoh, di bawah ini adalah header email umum, di mana Date menetapkan bidang Date.

    // For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
    
    // Add by SMTP server in delivery emails
    Received: from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700
    
    // Add by SMTP server in delivery emails
    Return-Path: <xyz@oikoscucine.it>
    
    // Add by SMTP server in delivery emails
    Received: from 195.120.225.20 (HELO mail.oikoscucine.it)
    by aspose.com with esmtp (:1CYY+<LA*- *1WK@)
    id Q8,/O/-.N83@7-9M
    for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300
    From: "XYZ" <xyz@oikoscucine.it>
    To: <abc@aspose.com>
    Subject: For ABC
    
    // Date will set the Date field, outlook will show this as
    Date: Thu, 22 Feb 2007 20:58:51 +0300
    Message-ID: <01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0006_01C7569A.58DF4CD0"
    X-Mailer: Microsoft Office Outlook, Build 11.0.5510
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
    Thread-Index: Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==
    X-Read: 1
    
  • MailPriority enumerasi - menentukan tingkat prioritas untuk mengirim pesan email. Bisa rendah, normal, atau tinggi. Prioritas memengaruhi kecepatan transmisi dan pengiriman.

  • MailSensitivity enumerasi - menentukan lima tingkat sensitivitas.

  • XMailer- menentukan perangkat lunak yang membuat pesan email.

Potongan kode di bawah ini menggambarkan cara menggunakan masing-masing properti yang dibahas di atas.

var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
{
    Date = DateTime.Now,
    Priority = MailPriority.High,
    Sensitivity = MailSensitivity.Normal,
    Xmailer = "Aspose.Email"
};

Minta Tanda Terima Baca

Untuk meminta sebuah tanda terima baca, gunakan Aspose.Email DeliveryNotificationOptions properti dari MailMessage kelas. Properti ini berisi nilai-nilai dari DeliveryNotificationOptions enumerasi.

Pertimbangkan contoh kode berikut:

// Create an Instance of MailMessage class
var eml = new MailMessage
{
    // Specify From, To, HtmlBody, DeliveryNotificationOptions field
    From = "sender@sender.com",
    To = "receiver@receiver.com",
    HtmlBody = "<html><body>This is the Html body</body></html>",
    DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess
};

eml.Headers.Add("Return-Receipt-To", "sender@sender.com");
eml.Headers.Add("Disposition-Notification-To", "sender@sender.com");

// Create an instance of SmtpClient Class
var client = new SmtpClient
{
    // Specify your mailing host server, Username, Password and Port No
    Host = "smtp.server.com",
    Username = "Username",
    Password = "Password",
    Port = 25
};

try
{
    // Client.Send will send this message
    client.Send(eml);
    // Display ‘Message Sent’, only if message sent successfully
    Console.WriteLine(@"Message sent");
}
catch (Exception ex)
{
    System.Diagnostics.Trace.WriteLine(ex.ToString());
}

Catatan: Permintaan tanda terima baca mungkin tidak selalu dipenuhi karena:

  • Klien email mungkin tidak mengimplementasikan fungsi tersebut.
  • Pengguna akhir mungkin menonaktifkan fungsionalitas tersebut.
  • Pengguna akhir dapat memilih untuk tidak mengirimkannya.

Sesuaikan Header Email

Header email mewakili standar Internet dan RFC mendefinisikan field header yang termasuk dalam pesan email Internet. Header email dapat ditentukan menggunakan MailMessage kelas. Tipe header umum didefinisikan dalam HeaderType kelas. Ini adalah kelas tertutup yang berfungsi seperti enumerasi normal.

Biasanya, header email berisi bidang-bidang berikut:

  • To: Alamat penerima dapat ditentukan di bidang To. Penerima pada bidang To adalah audiens utama pesan. Bisa ada lebih dari satu alamat penerima.
  • From: Field ini menampilkan alamat email pengirim pesan.
  • Cc: Memungkinkan pengguna mengirim pesan sebagai "Carbon Copy" atau "Courtesy Copy". Artinya, penerima tidak diharapkan membalas atau bertindak. Biasanya, personel supervisi diberi tahu dengan CC.
  • Bcc: Singkatan dari Blind Carbon Copy, yang memungkinkan Anda mengirim email kepada penerima yang disembunyikan dari penerima lain.
  • ReplyTo: Field header ini dimaksudkan untuk menunjukkan ke mana pengirim ingin balasan diarahkan.
  • Subject: Judul, heading, subjek. Sering digunakan sebagai indikator rangkaian untuk pesan yang membalas atau mengomentari pesan lain.
  • Date: Header ini menentukan tanggal (dan waktu). Biasanya ini adalah tanggal saat pesan dibuat dan dikirim.
  • XMailer: Informasi tentang perangkat lunak klien dari pengirim. Contoh: X-Mailer: Aspose.Email XMailer digunakan oleh klien email. Berbagai klien email akan memiliki nilai XMailer yang berbeda. Nilai XMailer MS Outlook adalah Microsoft Office Outlook, Build 11.0.5510. Nilai ini diabaikan oleh penerima email atau pembaca email.

Biasanya, header email terlihat seperti ini:

Reply-To: reply@reply.com
From: sender@sender.com
To: guangzhou@guangzhoo.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email

Untuk menyesuaikan header email, ikuti langkah kode berikut:

  • Buat sebuah instansi dari MailMessage kelas.
  • Tentukan To, From, Cc, Bcc, ReplyTo, Subject, Date & XMailer menggunakan sebuah instance dari MailMessage.
  • Buat sebuah instansi dari MimeHeader kelas dan tentukan header kustom.
  • Tambahkan header kustom ke MailMessage instance.

Potongan kode berikut menunjukkan cara mengatur header email.

var eml = new MailMessage
{
    ReplyToList = "reply@reply.com",
    From = "sender@sender.com",
    To = "receiver1@receiver.com",
    CC = "receiver2@receiver.com",
    Bcc = "receiver3@receiver.com",
    Subject = "test mail",
    Date = new System.DateTime(2006, 3, 6),
    XMailer = "Aspose.Email"
};

Potongan kode di atas menghasilkan header email dalam format berikut:

Reply-To: reply@reply.com
From: sender@sender.com
To: receiver1@receiver.com
CC: receiver2@receiver.com
BCC: receiver3@receiver.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email

Sisipkan Header pada Lokasi Tertentu

The Tambah metode dari HeaderCollection kelas menyisipkan header di akhir koleksi. Namun, terkadang diperlukan menyisipkan header pada lokasi tertentu. Dalam kasus seperti itu, the Tambah metode tidak akan membantu. Untuk mencapainya, gunakan Insert metode dari HeaderCollection. Jika koleksi berisi header dengan nama yang sama, header ini akan disisipkan sebelum header lain dengan nama yang sama. Potongan kode berikut menunjukkan cara menyisipkan header pada lokasi tertentu.

eml.Headers.Insert("Received", "Value");

Tambah Header Kustom

Header email dapat ditentukan menggunakan MailMessage kelas. Untuk menentukan header kustom dalam pesan email, pertimbangkan contoh kode berikut:

eml.Headers.Add("secret-header", "mystery");

Potongan kode di atas menghasilkan header email dalam format berikut:

secret-header: mystery

Buat Pesan yang Ditandatangani

API Aspose.Email menyediakan kemampuan untuk membuat pesan yang ditandatangani menggunakan sertifikat. The AttachSignature metode dari MailMessage kelas dapat digunakan untuk menandatangani pesan untuk penyimpanan atau bahkan mengirimnya menggunakan SmtpClient.

Menandatangani Pesan

Potongan kode berikut menunjukkan cara Menandatangani Pesan.

Menggunakan Opsi Sertifikat Terpisah

Klien email berbasis Web mungkin tidak dapat menampilkan isi pesan Signed. Hal ini dapat diatasi dengan memisahkan sertifikat sebelum mengirimkannya ke klien email berbasis Web. Bendera detached dalam metode overload dari AttachSignature dapat digunakan untuk mencapai ini. Jika disetel ke true, sertifikat terpisah dari email dan sebaliknya. Untuk melihat isi Pesan Signed di klien berbasis Web, Anda perlu membuat MailMessage dengan tanda tangan terpisah. Potongan kode berikut menunjukkan cara menggunakan opsi sertifikat terpisah.