このブログでは、Outlook電子メールメッセージ(MSG、EML、EMLX、またはMHTMLを含む)を作成し、.NETまたは.NET CoreでC#を使用して同期または非同期に電子メールを送信する方法を学習します。

C#はOutlookメールを送信します

電子メールは、メッセージを交換したり、ドキュメント、画像、その他の種類のファイルなどのコンテンツを共有したりするための主要なソースになっています。電子メールを使用する頻度は、重要な通知やドキュメントを複数のエンティティと共有するためのオンラインシステム内でより多くなります。このような場合、テンプレートを準備し、複数の利害関係者に手動で電子メールを送信することは、時間と手間がかかる作業になる可能性があります。

ここで、シームレスに電子メールを作成および送信できる電子メール自動化サービスが必要になります。したがって、この記事では、一般的なOutlook形式の電子メールメッセージを作成し、プログラムで電子メールを送信するプロセスを自動化する方法を説明します。この記事を読むと、次のことができるようになります。

  • C#でメールメッセージを作成して保存し、
  • C#でHTML本文を使用してメールを作成します。
  • C#で特定のエンコーディングを使用して電子メールを作成します。
  • C#でSMTPを使用して同期的に電子メールを送信します。
  • C#でSMTPを使用して非同期でメールを送信します。
  • C#で一括メールを送信します。

Outlookの電子メールを作成および送信するためのC#API

電子メールメッセージの作成と送信のプロセスを自動化するために、強力な電子メール操作および処理APIであるAspose.Email for.NETを使用します。 MSG、EML /EMLXなどのMSOutlookメッセージを含む一般的な電子メール形式をサポートします。APIのDLLを直接ダウンロードするか、NuGet PackageManagerまたはVisualStudioのPackageManagerConsoleからインストールできます。 。

PM> Install-Package Aspose.Email

C#(コンソール、ASP.NETなど)アプリケーションを作成し、Aspose.Email for .NETをインストールしたら、C#での電子メールの作成と送信を開始できます。

C#でOutlookメールを作成する

Outlookの電子メールメッセージを作成または操作するために、Aspose.EmailはMailMessageクラスを提供します。このクラスでは、電子メールメッセージのすべてのプロパティ(件名、宛先、差出人、本文)を設定し、添付ファイルを追加し、EML、MSG、MHTMLなどのさまざまな電子メール形式でメッセージを保存できます。作成手順は次のとおりです。電子メールメッセージ:

  • MailMessageクラスのインスタンスを作成します。
  • メッセージのプロパティを設定します。
  • MailMessage.Save()メソッドを使用して電子メールメッセージを保存します。

次のコードサンプルは、C#で電子メールメッセージを作成して保存する方法を示しています。

// MailMessageクラスの新しいインスタンスを作成します
MailMessage message = new MailMessage();

// メッセージの件名、本文、送信者情報を設定します
message.Subject = "New message created by Aspose.Email for .NET";
message.Body = "This is the body of the email.";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// 受信者とCC受信者に追加
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// 添付ファイルを追加する
message.Attachments.Add(new Attachment("word.docx"));

// メッセージをEML、EMLX、MSG、およびMHTML形式で保存する
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);
message.Save("EmailMessage.emlx", SaveOptions.CreateSaveOptions(MailMessageSaveType.EmlxFormat));
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);
message.Save("EmailMessage.mhtml", SaveOptions.DefaultMhtml);

C#でHTML本文を使用してOutlook電子メールを作成する

HTMLタグは、電子メールの本文をより構造化され、見栄えがよく、表、画像、リストなどのさまざまな要素で強化するために使用されます。 HTML本文のメールを作成する場合は、MailMessage.HtmlBodyプロパティを使用できます。次のコードサンプルは、C#でHTML本文を使用してOutlook電子メールを作成する方法を示しています。

// MailMessageクラスの新しいインスタンスを作成します
MailMessage message = new MailMessage();

// メッセージの件名、HTML本文、送信者情報を設定します
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// 受信者とCC受信者に追加
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// メッセージをEML/EMLX / MSG/MHTML形式で保存します
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);

C#で特定のエンコーディングを使用してOutlook電子メールを作成する

希望するエンコーディング標準を指定して、ブラウザまたは電子メールアプリケーションに電子メールの本文の文字を解釈する方法を通知することもできます。 MailMessage.BodyEncodingプロパティはこの目的で使用されます。次のコードサンプルは、C#を使用してOutlook電子メールを作成するときに本文のエンコードを設定する方法を示しています。

// MailMessageクラスの新しいインスタンスを作成します
MailMessage message = new MailMessage();

// メッセージの件名、HTML本文、送信者、受信者の情報を設定します
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));

// エンコーディングを指定する 
message.BodyEncoding = Encoding.ASCII;

// メッセージをEML/EMLX / MSG/MHTML形式で保存します
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);

Outlookの電子メールをC#で同期的または非同期的に送信する

これで、電子メールメッセージを作成したら、同期的または非同期的に受信者に送信できます。 SmtpClientクラスを使用すると、SMTP(Simple Mail Transfer Protocol)を使用してOutlookの電子メールメッセージを送信できます。以下は、Aspose.Email for .NETを使用してC#で電子メールを送信する手順です。

  • MailMessageクラスを使用して電子メールメッセージを作成またはロードします。
  • SmtpClientクラスのインスタンスを作成し、ホスト、ユーザー名、パスワード、およびポート番号を設定します。
  • SmtpClient.SendまたはSmtpClient.SendAsyncメソッドをそれぞれ使用して、同期または非同期で電子メールを送信します。

Outlookの電子メールをC#で同期的に送信する

// MailMessageインスタンスを作成します。新しいメッセージを作成するか、作成済みのメッセージファイル(eml、msgなど)をロードできます。
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// SmtpClientクラスのインスタンスを作成します
SmtpClient client = new SmtpClient();

// 郵送先のホスト、ユーザー名、パスワード、ポート番号、セキュリティオプションを指定します
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
try
{
	// このメールを送信する
	client.Send(msg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

Outlookの電子メールをC#で非同期に送信する

// MailMessageインスタンスを作成します。新しいメッセージを作成するか、作成済みのメッセージファイル(eml、msgなど)をロードできます。
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// SmtpClientクラスのインスタンスを作成します
SmtpClient client = new SmtpClient();

// 郵送先のホスト、ユーザー名、パスワード、ポート番号、セキュリティオプションを指定します
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;

// 郵送先のホスト、ユーザー名、パスワード、ポート番号、セキュリティオプションを指定します
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit; 

// メッセージを送る
client.SendAsync(msg);

Console.WriteLine("Sending message..."); 

msg.Dispose(); 

C#で一括メールを送信する

メールをまとめて作成して送信することもできます。 MailMessageCollectionクラスは、送信する電子メールメッセージのコレクションを含むために使用されます。次のコードサンプルは、C#で一括メールを送信する方法を示しています。

// SmtpClientを作成し、サーバー、ポート、ユーザー名、およびパスワードを指定します
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");

// MailMessageクラスのインスタンスを作成し、To、From、Subject、およびMessageを指定します
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");

// MailMessageCollectionのインスタンスを作成し、それに電子メールメッセージを追加します
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);
 
try
{  
	// メッセージを送る
	client.Send(manyMsg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

ライブデモ

結論

この記事では、C#でOutlook電子メールを作成する方法を学びました。さらに、.NETアプリケーション内から同期的または非同期的に電子メールを送信する方法を見てきました。 Aspose.Email for .NETのドキュメントを調べて、APIの詳細を確認できます。

関連項目