C# でカスタマイズされたオプションを使用したメールメッセージの作成

新しいメールメッセージの作成

新しいメールメッセージを作成するには、次を使用できます MailMessage クラスです。MailMessage クラスは、作成されたメールメッセージの送信者メールアドレス、受信者メールアドレス、件名、および HTML 形式のメール本文などのプロパティを初期化します。

以下のコードと詳細な手順を参照して、新しいメールメッセージを作成し、プロパティを設定してください。

  1. 新しいインスタンスを作成します MailMessage クラス。
  2. 設定します From 送信者のメールアドレスを設定するプロパティです。
  3. 設定します To 受信者のメールアドレスのカンマ区切りリストを設定するプロパティです。
  4. 設定します Subject メールの件名を設定するプロパティです。
  5. 設定します HtmlBody メール本文の HTML コンテンツを設定するプロパティです。
// 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>"
};

デフォルトテキストエンコーディングの設定

次のプロパティのデフォルトテキストエンコーディングを設定します:

  • From: 表示名
  • To: 表示名
  • Subject
  • 本文

使用する MailMessage.PreferredTextEncoding 上記プロパティのすべてのテキストがメールメッセージで正しくエンコードされるようにするプロパティです。以下のコードスニペットは、メールアドレス、件名、本文の表示名としてフランス語の単語を使用する方法を示します。

メール本文の設定

プレーンテキスト本文の設定

メール本文は次を使用して指定できます 本文 プロパティ( MailMessage クラス。

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

HTML 本文の設定

メール本文は以下を使用して指定することもできます HtmlBody プロパティ( MailMessage クラス。

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

代替テキストの設定

EML ファイルの代替ビューは、メールコンテンツの別の表現で、メールメッセージの異なるレンダリングを提供できます。たとえば、HTML でメッセージを送信する場合、HTML コンテンツを表示できないメールリーダーを使用する受信者向けに プレーンテキスト バージョンを提供したいことがあります。その目的には、 AlternateView クラスです。このクラスには2つのプロパティがあります、 LinkedResources および BaseUri、メールコンテンツ内の URL を解決するために使用されます。

  • LinkedResources はコレクションです LinkedResource オブジェクトです。レンダリング時に、メールコンテンツ内の URL は各コンテンツリンクの URL と最初に照合されます。 LinkedResource オブジェクトは LinkedResources コレクション内で解決されます。
  • BaseUri メールリーダーが本文内の相対 URL を解決し、さらにコンテンツリンクの相対 URL を解決するために使用されます。 LinkedResources コレクション。

代替テキストを設定するための詳細な手順を含む以下のコードをご検討ください。

  1. インスタンスを作成する MailMessage クラス。
  2. Create AlternateView 文字列で指定された内容でメールメッセージを表示します。
  3. 以下を使用して代替テキストを追加します Add メソッド MailMessage.AlternateViews コレクション。
// 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);

メール本文エンコーディングの指定

Aspose.Email は、 BodyEncoding プロパティ( MailMessage メール本文のエンコーディングを指定するクラスです。例:

eml.BodyEncoding = Encoding.UTF8;

複数受信者を指定

メールメッセージの受信者を指定する方法は、ToCCBCC の3つのフィールドを使用することです。

  • To フィールドはメッセージの主受信者です。このフィールドにカンマで区切って1つ以上のメールアドレスを入力できます。To フィールドはすべてのメールメッセージで必須です。

  • CC フィールドはカーボンコピーを表します。メッセージのコピーをトピックに関心のある、または関与している他の人に送信するために使用します。CC フィールドは任意で、複数のメールアドレスを含めることができます。CC の受信者は他の受信者を確認できます。

  • BCC フィールドはブラインドカーボンコピーを表します。CC フィールドに似ていますが、BCC フィールドの受信者は他の受信者から隠れます。受信者のプライバシーを保護したり、返信で受信トレイが混雑するのを防ぐ場合に便利です。BCC フィールドは任意で、複数のメールアドレスを設定できます。

以下のコードをご検討ください。詳細な手順でメールメッセージの複数受信者を指定します。

コード手順:

  1. 新しいインスタンスを作成します MailMessage クラス。
  2. 設定します From 送信者のメールアドレスを設定するプロパティです。
  3. 設定します To プロパティ:主要受信者のメールアドレス配列です。
  4. 設定します CC プロパティ:メールのコピー(Cc)を受け取る受信者のメールアドレス配列です。
  5. 設定します Bcc プロパティ:メールのブラインドカーボンコピー(Bcc)を受け取る受信者のメールアドレス配列です。

コードサンプル:

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

メールアドレスに表示名を追加

メールアドレスに加えて、表示名 を含めることで、送信者または受信者を特定できます。氏名、ニックネーム、その他の識別子が含まれることがあります。

メールクライアントやウェブメールのインターフェイスでメールメッセージが表示されるとき、表示名は通常メールアドレスと一緒に表示され、送信者や宛先をユーザーが判別しやすくなります。メールメッセージのメールアドレスに表示名を追加するには、以下のコードと詳細な手順を検討してください:

  1. 以下を使用してファイルからメールメッセージをロードします MailMessage.Load メソッド。
  2. 以下を使用してメールの送信者を設定します From 新しい…を作成して eml オブジェクトのプロパティを設定します MailAddress 送信者のメールアドレスと表示名を持つオブジェクトです。
  3. 以下を使用してメールの受信者を追加します To eml オブジェクトのプロパティ、必要に応じて CC(Carbon Copy)リストを使用して追加します CC プロパティ、BCC(Blind Carbon Copy)リストを使用する Bcc プロパティを使用して、次を呼び出します Add 新しいメソッド MailAddress 受信者のメールアドレスと表示名を含むオブジェクトです。

コードサンプル:

// 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 "));

追加プロパティの設定

Aspose.Email を使用すると、以下の追加プロパティを使用できます MailMessage このようなクラス:

  • Date プロパティ - メールの 日付と時刻 を設定します。既定では、日付はメッセージが送信された実際の日付で、時刻は送信時刻です(Microsoft Outlook が表示)。しかし、実際のメール配信時刻は SMTP サーバーがメールヘッダーに追加します。例えば、以下は一般的なメールヘッダーで、 Date 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 列挙体 - メール送信の優先度レベルを指定します。低、普通、高のいずれかです。優先度は送信速度と配信に影響します。

  • MailSensitivity 列挙体 - 感度の5段階を指定します。

  • XMailer- メールメッセージを作成したソフトウェアを指定します。

以下のコードスニペットは、上記で説明した各プロパティの使用方法を示しています。

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

開封通知の要求

要求するには 開封通知、Aspose.Email を使用してください DeliveryNotificationOptions プロパティ( MailMessage クラスです。このプロパティはの値を含みます。 DeliveryNotificationOptions 列挙体です。

以下の コードサンプル を検討してください:

// 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());
}

: 開封通知の要求は、以下の理由で常に受け入れられるとは限りません:

  • メールクライアントがその機能を実装していない場合があります。
  • エンドユーザーはその機能がオフになっている可能性があります。
  • エンドユーザーは送信しないことを選択できる場合があります。

メールヘッダーのカスタマイズ

メールヘッダーはインターネット標準を表し、RFC はインターネットメールメッセージに含まれるヘッダー項目を定義しています。メールヘッダーは以下を使用して指定できます: MailMessage クラスです。共通のヘッダータイプは以下で定義されています: HeaderType クラスです。通常の列挙体として機能するシールドクラスです。

通常、メールヘッダーは以下のフィールドを含みます:

  • To: 受信者のアドレスは To フィールドで指定できます。To フィールドの受信者はメッセージの主要な対象です。複数の受信者アドレスを指定できます。
  • From: メッセージ送信者のメールアドレスを示すフィールドです。
  • Cc: メッセージを「カーボンコピー」または「礼儀的コピー」として送信できるようにします。受信者は返信や対応を期待されません。通常、監督者に通知するために使用されます。
  • Bcc: Blind Carbon Copy の略で、他の受信者から隠された受信者にメールを送信できます。
  • ReplyTo: 送信者が返信先として指定したいアドレスを示すヘッダーです。
  • Subject: タイトル、見出し、件名。返信やコメントのスレッドを示す指標として頻繁に使用されます。
  • Date: このヘッダーは日付(および時刻)を指定します。通常、メッセージが作成・送信された日時です。
  • XMailer: 送信者のクライアントソフトウェアに関する情報です。例: X-Mailer: Aspose.Email XMailer はメールクライアントで使用されます。メールクライアントによって XMailer の値は異なります。MS Outlook の XMailer の値は Microsoft Office Outlook, Build 11.0.5510 です。メール受信側やリーダーでは無視されます。

通常、メールヘッダーは次のようになります:

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

メールヘッダーをカスタマイズするには、次の コード手順 に従ってください:

  • インスタンスを作成します MailMessage クラス。
  • インスタンスを使用して To、From、Cc、Bcc、ReplyTo、Subject、Date および XMailer を指定します。 MailMessage.
  • インスタンスを作成します MimeHeader クラスに追加し、カスタムヘッダーを指定します。
  • カスタムヘッダーを MailMessage インスタンス。

以下の コードスニペット は、メールヘッダーの設定方法を示します。

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

上記のコードスニペットは、次の形式のメールヘッダーを生成します:

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

特定の位置にヘッダーを挿入

この Add メソッド( HeaderCollection クラスはコレクションの末尾にヘッダーを挿入します。ただし、特定の位置にヘッダーを挿入する必要がある場合もあります。その場合、 Add メソッドでは役に立ちません。これを実現するには、以下を使用します Insert メソッド( HeaderCollection。コレクションに同名のヘッダーが含まれる場合、このヘッダーは同名の他のヘッダーの前に挿入されます。以下のコードスニペットは、特定の位置にヘッダーを挿入する方法を示します。

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

カスタムヘッダーの追加

メールヘッダーは次を使用して指定できます。 MailMessage クラスです。メールメッセージに カスタムヘッダー を指定するには、次のコードサンプルを参照してください。

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

上記のコードスニペットは、次の形式のメールヘッダーを生成します:

secret-header: mystery

署名付きメッセージの作成

Aspose.Email API は証明書を使用して署名付きメッセージを作成する機能を提供します。 AttachSignature メソッド( MailMessage クラスは、メッセージに署名して保存したり、次のものを使用して送信したりするために使用できます。 SmtpClient.

メッセージに署名する

以下のコードスニペットは、メッセージに署名する方法を示しています。

分離証明書オプションの使用

Web ベースのメールクライアントは署名メッセージの本文を表示できないことがあります。送信前に証明書を分離することで対処できます。オーバーロードされたメソッドの分離フラグは AttachSignature これを実現するには使用できます。true に設定すると、証明書はメールから分離されます。Web ベースのクライアントで署名メッセージ本文を表示するには、以下を作成する必要があります。 MailMessage 分離署名付きです。以下のコードスニペットは、分離証明書オプションの使用方法を示しています。