C# アプリケーションからメールを送信する ことは、ビジネスや業務システム開発において一般的なタスクです。プロジェクトの進捗報告、アラート通知、自動レポートなど、信頼性の高いメール送信機能は欠かせません。
この記事では、SMTP 通信とメールフォーマットを簡単に実装できる強力なコンポーネントである Spire.Email for .NET を使って、C# でメールを送信する方法を解説します。SMTP 設定、Gmail との連携、HTML/テキスト本文、ファイル添付、複数宛先の指定など、多彩な機能を紹介します。
目次
- 1. プロジェクトの準備
- 2. プレーンテキストメールを SMTP 経由で送信
- 3. Gmail SMTP を使って HTML メール+添付ファイルを送信
- 4. C# メール送信の応用テクニック:画像埋め込みと一括送信
- 5. よくあるエラーと対処法
- 6. Spire.Email の活用シーン
- 7. 無償ライセンス申請
- 8. よくある質問
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);
ポイント:
MailAddress
とMailMessage
クラスを使用ConnectionProtocols.StartTls
により、TLS によるセキュアな通信を確立
以下のスクリーンショットは、上記のコードで実際に送信されたメールの内容です。
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
を使用BodyHtml
+BodyText
を併用することで、HTML/非対応クライアントの両方に対応To.Add()
,Cc.Add()
,Bcc.Add()
で複数宛先を追加- Gmail の SMTP を
StartTls
でセキュアに使用
💡 2 段階認証を有効にしている場合、アプリ パスワード の設定が必要です。
以下は、Gmail SMTP を通じて送信された HTML メール(CC・BCC・PDF 添付あり)の表示例です。
関連チュートリアル: 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.ContentId
+DispositionType = "Inline"
により、HTML 内に画像を埋め込み表示SendOne()
で個別メールを送信SendSome()
で複数メールをまとめて一括送信(例:定期レポートや通知)
以下のスクリーンショットは、企業ロゴを埋め込んだ HTML メールの表示例です。
5. よくあるエラーとトラブルシューティング
エラー内容 | 主な原因 |
---|---|
認証失敗 | 認証情報が間違っている、またはアプリパスワードが未設定 |
セキュア接続が必要です | ConnectionProtocols に StartTLS または SSL が必要 |
HTML が表示されない | BodyHtml と BodyText の両方を適切に設定していない |
ファイルが見つかりません | 添付ファイルのパスが間違っている |
6. Spire.Email の活用シーン
Spire.Email for .NET は、以下のようなシナリオに最適です:
- 日次/週次のレポート自動配信
- ユーザー登録完了通知
- 注文確認メール(添付付き)
- Web フォームからの通知
- 埋め込み画像付きのニュースレター配信
SMTP ヘッダや MIME フォーマット、エンコーディング処理を意識せず、直感的に操作できる API を提供します。
結論
Spire.Email for .NET を使えば、C# アプリケーションに信頼性の高いメール送信機能を簡単に組み込むことができます。トランザクションメール、HTML レポート、スケジュール配信など、あらゆる用途に柔軟に対応可能です。
プレーンテキスト/HTML 両対応、添付ファイル、Gmail SMTP、画像の埋め込み、複数送信など、豊富な機能を備えており、外部ライブラリに頼らずメール機能を統合できます。
7. 無償の一時ライセンスを申請する方法
メール本文や添付ファイルに表示される評価版の警告を削除するには、無償の一時ライセンスを申請してください。
フォームを記入し、指示に従ってライセンスを適用するだけで、全機能が試用可能になります。
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()
メソッドを使ってメールを送信できます。