チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Email for .NET»C# でメールを送信する方法(SMTP・HTML・添付対応)
2025-07-04

C# でメールを送信する方法(SMTP・HTML・添付対応)

Spire.Email でメールを送信 – HTML フォーマット、SMTP 設定、添付ファイル、複数宛先対応

C# アプリケーションからメールを送信する ことは、ビジネスや業務システム開発において一般的なタスクです。プロジェクトの進捗報告、アラート通知、自動レポートなど、信頼性の高いメール送信機能は欠かせません。

この記事では、SMTP 通信とメールフォーマットを簡単に実装できる強力なコンポーネントである Spire.Email for .NET を使って、C# でメールを送信する方法を解説します。SMTP 設定、Gmail との連携、HTML/テキスト本文、ファイル添付、複数宛先の指定など、多彩な機能を紹介します。

目次

1. プロジェクトの準備

まずは .NET プロジェクト(Console App または ASP.NET)を作成し、Spire.Email for .NET パッケージを導入します。

NuGet からインストール:

Install-Package Spire.Email

または Spire.Email for .NET を手動でダウンロードし、ローカルのインストールフォルダから Spire.Email.dll を参照設定します。

2. プレーンテキストメールを SMTP 経由で送信する方法(C#)

以下の例では、SMTP サーバーを経由してプレーンテキストのメールを送信する方法を紹介します。

using Spire.Email;
using Spire.Email.Smtp;

// SMTP クライアントを構成します
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.example.com";
smtp.Port = 587;
smtp.Username = "your@example.com";
smtp.Password = "your_password";
smtp.ConnectionProtocols = ConnectionProtocols.StartTls;

// メールアドレスを作成します
MailAddress sender = new MailAddress("your@example.com", "送信者名");
MailAddress recipient = new MailAddress("recipient@example.com", "受信者名");
MailMessage message = new MailMessage(sender, recipient);

// メールの内容を設定します
message.Subject = "テストメール";
message.BodyText = "これはプレーンテキストのテストメールです。";

// メールを送信します
smtp.SendOne(message);

ポイント

  • MailAddressMailMessage クラスを使用
  • ConnectionProtocols.StartTls により、TLS によるセキュアな通信を確立

以下のスクリーンショットは、上記のコードで実際に送信されたメールの内容です。

Spire.Email を使用したプレーンテキストメールの送信

3. Gmail SMTP を使って HTML メールと添付ファイルを送信(C#)

以下は Gmail の SMTP を使用して、HTML メールを複数の宛先に送信し、添付ファイルを追加する例です。HTML をサポートしないメールクライアント向けにテキスト本文も設定しています。

using Spire.Email;
using Spire.Email.Smtp;

// MailAddress オブジェクトを作成します
MailAddress from = new MailAddress("your@gmail.com", "あなたの名前");
MailAddress to1 = new MailAddress("user1@example.com", "ユーザー1");
MailAddress to2 = new MailAddress("user2@example.com", "ユーザー2");

// メールメッセージを作成します
MailMessage message = new MailMessage(from, to1);
message.To.Add(to2);
message.Cc.Add(new MailAddress("cc@example.com", "CC担当者"));
message.Bcc.Add(new MailAddress("bcc@example.com"));

// メッセージの HTML 本文とテキスト本文を設定します
message.Subject = "月次レポート - 2025年6月";
message.BodyHtml = "<h2 style='color:#2E86C1;'>レポート概要</h2><p>添付のPDFレポートをご確認ください。</p>";
message.BodyText = "レポート概要 - 添付のPDFをご確認ください。";

// メールに添付ファイルを追加します
Attachment attachment = new Attachment(@"Sample.pdf");
message.Attachments.Add(attachment);

// SMTP クライアントを構成します
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Username = "your@gmail.com";
smtp.Password = "your_app_password";
smtp.ConnectionProtocols = ConnectionProtocols.StartTls;

// メールを送信します
smtp.SendOne(message);

ポイント

  • MailAddress, MailMessage, Attachment, SmtpClient を使用
  • BodyHtmlBodyText を併用することで、HTML/非対応クライアントの両方に対応
  • To.Add(), Cc.Add(), Bcc.Add() で複数宛先を追加
  • Gmail の SMTP を StartTls でセキュアに使用

💡 2 段階認証を有効にしている場合、アプリ パスワード の設定が必要です。

以下は、Gmail SMTP を通じて送信された HTML メール(CC・BCC・PDF 添付あり)の表示例です。

C# で Gmail SMTP 経由の HTML メール(添付あり)を送信

関連チュートリアル: C# で添付ファイル付きのメールを送信する方法

4. C# メール送信の応用テクニック:画像埋め込みと一括送信

このセクションでは、Spire.Email の機能を使って、埋め込み画像やバッチ送信など、さらに高度なメール送信の例を紹介します。

using Spire.Email;
using Spire.Email.Smtp;

// 画像を埋め込んだメールを準備します
MailMessage message = new MailMessage(
    new MailAddress("your@domain.com", "送信者"),
    new MailAddress("client@domain.com", "クライアント"));

message.Subject = "ブランディング更新";
message.BodyHtml = "<h1>新しいロゴ</h1><img src=\"cid:logo\">";
message.BodyText = "画像を見るにはHTML形式でこのメッセージをご覧ください。";

Attachment logo = new Attachment(@"C:\Images\logo.png");
logo.ContentId = "logo";
logo.DispositionType = "Inline";
message.Attachments.Add(logo);

// 2通目のメールを準備します
MailMessage message2 = new MailMessage(
    new MailAddress("your@domain.com"),
    new MailAddress("sales@domain.com"));
message2.Subject = "週間サマリー";
message2.BodyText = "これは自動送信された週間更新メールです。";

// SMTP クライアントを作成します
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.domain.com";
smtp.Port = 587;
smtp.Username = "your@domain.com";
smtp.Password = "your_password";
smtp.ConnectionProtocols = ConnectionProtocols.StartTls;

// 1通のメールを送信します
smtp.SendOne(message);

// 複数のメールを一括送信します
smtp.SendSome(new List<MailMessage> { message, message2 });

ポイント

  • Attachment.ContentIdDispositionType = "Inline" により、HTML 内に画像を埋め込み表示
  • SendOne() で個別メールを送信
  • SendSome() で複数メールをまとめて一括送信(例:定期レポートや通知)

以下のスクリーンショットは、企業ロゴを埋め込んだ HTML メールの表示例です。

埋め込み画像付き HTML メール(Spire.Email)

5. よくあるエラーとトラブルシューティング

エラー内容 主な原因
認証失敗 認証情報が間違っている、またはアプリパスワードが未設定
セキュア接続が必要です ConnectionProtocolsStartTLS または SSL が必要
HTML が表示されない BodyHtmlBodyText の両方を適切に設定していない
ファイルが見つかりません 添付ファイルのパスが間違っている

6. Spire.Email の活用シーン

Spire.Email for .NET は、以下のようなシナリオに最適です:

  • 日次/週次のレポート自動配信
  • ユーザー登録完了通知
  • 注文確認メール(添付付き)
  • Web フォームからの通知
  • 埋め込み画像付きのニュースレター配信

SMTP ヘッダや MIME フォーマット、エンコーディング処理を意識せず、直感的に操作できる API を提供します。

結論

Spire.Email for .NET を使えば、C# アプリケーションに信頼性の高いメール送信機能を簡単に組み込むことができます。トランザクションメール、HTML レポート、スケジュール配信など、あらゆる用途に柔軟に対応可能です。

プレーンテキスト/HTML 両対応、添付ファイル、Gmail SMTP、画像の埋め込み、複数送信など、豊富な機能を備えており、外部ライブラリに頼らずメール機能を統合できます。

7. 無償の一時ライセンスを申請する方法

メール本文や添付ファイルに表示される評価版の警告を削除するには、無償の一時ライセンスを申請してください。

👉 1 ヶ月の無償ライセンスを申請する

フォームを記入し、指示に従ってライセンスを適用するだけで、全機能が試用可能になります。

8. よくある質問(FAQ)

C# で HTML メールを送信するには?

MailMessage オブジェクトの BodyHtml プロパティに HTML を設定することで HTML メールを送信できます。HTML 非対応のクライアント向けに BodyText も併用することをおすすめします。

C# で複数の宛先にメールを送るには?

message.To.Add()message.Cc.Add()message.Bcc.Add() を使って複数宛先を追加できます。Spire.Email は To/Cc/Bcc の各フィールドに対応しています。

ASP.NET や MVC プロジェクトで SMTP を使ってメールを送信する方法は?

ASP.NET や MVC プロジェクトでも、Console アプリと同様に SmtpClient を設定し、SendOne()SendSome() メソッドを使ってメールを送信できます。

Read 13 times