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&#64;example.com"; smtp.Password = "your_password"; smtp.ConnectionProtocols = ConnectionProtocols.StartTls; // メールアドレスを作成します MailAddress sender = new MailAddress("your&#64;example.com", "送信者名"); MailAddress recipient = new MailAddress("recipient&#64;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&#64;gmail.com", "あなたの名前"); MailAddress to1 = new MailAddress("user1&#64;example.com", "ユーザー1"); MailAddress to2 = new MailAddress("user2&#64;example.com", "ユーザー2"); // メールメッセージを作成します MailMessage message = new MailMessage(from, to1); message.To.Add(to2); message.Cc.Add(new MailAddress("cc&#64;example.com", "CC担当者")); message.Bcc.Add(new MailAddress("bcc&#64;example.com")); // メッセージの HTML 本文とテキスト本文を設定します message.Subject = "月次レポート - 2025年6月"; message.BodyHtml = "<h2 style=&#39;color:#2E86C1;&#39;>レポート概要</h2><p>添付のPDFレポートをご確認ください。</p>"; message.BodyText = "レポート概要 - 添付のPDFをご確認ください。"; // メールに添付ファイルを追加します Attachment attachment = new Attachment(&#64;"Sample.pdf"); message.Attachments.Add(attachment); // SMTP クライアントを構成します SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.Username = "your&#64;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&#64;domain.com", "送信者"), new MailAddress("client&#64;domain.com", "クライアント")); message.Subject = "ブランディング更新"; message.BodyHtml = "<h1>新しいロゴ</h1><img src="cid:logo">"; message.BodyText = "画像を見るにはHTML形式でこのメッセージをご覧ください。"; Attachment logo = new Attachment(&#64;"C:Imageslogo.png"); logo.ContentId = "logo"; logo.DispositionType = "Inline"; message.Attachments.Add(logo); // 2通目のメールを準備します MailMessage message2 = new MailMessage( new MailAddress("your&#64;domain.com"), new MailAddress("sales&#64;domain.com")); message2.Subject = "週間サマリー"; message2.BodyText = "これは自動送信された週間更新メールです。"; // SMTP クライアントを作成します SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.domain.com"; smtp.Port = 587; smtp.Username = "your&#64;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. 無償の一時ライセンスを申請する方法 メール本文や添付ファイルに表示される評価版の警告を削除するには、無償の一時ライセンスを申請してください。 👉 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() メソッドを使ってメールを送信できます。