C# でカスタマイズされたオプションを使用したメールメッセージの作成
新しいメールメッセージの作成
新しいメールメッセージを作成するには、次を使用できます MailMessage クラスです。MailMessage クラスは、作成されたメールメッセージの送信者メールアドレス、受信者メールアドレス、件名、および HTML 形式のメール本文などのプロパティを初期化します。
以下のコードと詳細な手順を参照して、新しいメールメッセージを作成し、プロパティを設定してください。
- 新しいインスタンスを作成します MailMessage クラス。
- 設定します From 送信者のメールアドレスを設定するプロパティです。
- 設定します To 受信者のメールアドレスのカンマ区切りリストを設定するプロパティです。
- 設定します Subject メールの件名を設定するプロパティです。
- 設定します 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 コレクション。
代替テキストを設定するための詳細な手順を含む以下のコードをご検討ください。
- インスタンスを作成する MailMessage クラス。
- Create AlternateView 文字列で指定された内容でメールメッセージを表示します。
- 以下を使用して代替テキストを追加します 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;
複数受信者を指定
メールメッセージの受信者を指定する方法は、To、CC、BCC の3つのフィールドを使用することです。
-
To フィールドはメッセージの主受信者です。このフィールドにカンマで区切って1つ以上のメールアドレスを入力できます。To フィールドはすべてのメールメッセージで必須です。
-
CC フィールドはカーボンコピーを表します。メッセージのコピーをトピックに関心のある、または関与している他の人に送信するために使用します。CC フィールドは任意で、複数のメールアドレスを含めることができます。CC の受信者は他の受信者を確認できます。
-
BCC フィールドはブラインドカーボンコピーを表します。CC フィールドに似ていますが、BCC フィールドの受信者は他の受信者から隠れます。受信者のプライバシーを保護したり、返信で受信トレイが混雑するのを防ぐ場合に便利です。BCC フィールドは任意で、複数のメールアドレスを設定できます。
以下のコードをご検討ください。詳細な手順でメールメッセージの複数受信者を指定します。
コード手順:
- 新しいインスタンスを作成します MailMessage クラス。
- 設定します From 送信者のメールアドレスを設定するプロパティです。
- 設定します To プロパティ:主要受信者のメールアドレス配列です。
- 設定します CC プロパティ:メールのコピー(Cc)を受け取る受信者のメールアドレス配列です。
- 設定します 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"}
};
メールアドレスに表示名を追加
メールアドレスに加えて、表示名 を含めることで、送信者または受信者を特定できます。氏名、ニックネーム、その他の識別子が含まれることがあります。
メールクライアントやウェブメールのインターフェイスでメールメッセージが表示されるとき、表示名は通常メールアドレスと一緒に表示され、送信者や宛先をユーザーが判別しやすくなります。メールメッセージのメールアドレスに表示名を追加するには、以下のコードと詳細な手順を検討してください:
- 以下を使用してファイルからメールメッセージをロードします
MailMessage.Loadメソッド。 - 以下を使用してメールの送信者を設定します
From新しい…を作成して eml オブジェクトのプロパティを設定しますMailAddress送信者のメールアドレスと表示名を持つオブジェクトです。 - 以下を使用してメールの受信者を追加します
Toeml オブジェクトのプロパティ、必要に応じて 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 分離署名付きです。以下のコードスニペットは、分離証明書オプションの使用方法を示しています。