SITECORE MANIA 開発者向け技術ブログ

コードサンプル

齊藤

齊藤

Sitecore(サイトコア)SMTPサーバーからメールを送ってみる

パスワードを忘れた時に、ユーザーに仮パスワードをメールで送信したい場面があったので、「まずはメールを送るのってどうやるんだ?」と思い調べてみました。 今回の記事は以前執筆したこちらの記事 を参考にして、実際にやってみた的な記事になります。


テスト環境

  • Windows 11
  • Sitecore 10.4.0
  • VisualStudio 2022

手順

1. コントローラー等の作成

Sitecoreを新規でインストールし、サンプルでサイトを立てて…

ページにアクセスするとビューを返すだけの、簡単なコントローラーを作成しました。

using System.Web.Mvc;

namespace Training.Website.Controllers
{
    public class public class MailController : Controller
    {    
        //ページにアクセスしたらメールを送る
        public ActionResult MailSend()

            return View("/Views/Mail/MailSend.cshtml");
        }
    }
}
    

その他、MailSend.cshtmlと
Sitecoreのコンテンツエディター内でレイアウト、レンダリングアイテム、テンプレートアイテム、ページアイテムを作成します。

2. コードを追加する

エラー処理等は考慮せず、極力シンプルなサンプルコードを書いてみました。

MailController.cs

using System.Net;
using System.Net.Mail;
using System.Web.Mvc;

namespace Training.Website.Controllers
{
    public class MailController : Controller
    {
        //ページにアクセスしたらメールを送る
        public ActionResult MailSend()
        {
            //宛先や件名、本文の設定
            string from = "test@example.com";
            string to = "test@example.com";
            string subject = "Sitecoreからのテストメールです。";
            string body = $"Sitecoreから送信したメールです。";
            string fromName = "送信者の名前";
            string toName = "受取人の名前";

            //MailMessageインスタンスを作成して上記の変数を取り込む
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
            message.From = new System.Net.Mail.MailAddress(from, fromName);
            message.To.Add(new System.Net.Mail.MailAddress(to, toName));
            message.Subject = subject;
            message.Body = body;

            //実際にメールを送るメソッド
            SendMailBySmtpServer(message);

            return View("/Views/Mail/MailSend.cshtml");
        }


        /// 
        /// メールを送る処理
        /// 
        /// 
        public static void SendMailBySmtpServer(MailMessage message)
        {
            //SMTPのメールサーバーホスト名
            string mailServer = "xxxHOSTNAMExxx";

            //SMTPのメール送信ポート番号(SMTPサーバーで対応しているものを選択)
            int mailServerPort = 587;

            //SMTPのユーザー名
            string mailServerUserName = "xxxUSERNAMExxx";

            //SMTPのログインパスワード
            string mailServerPassword = "xxxPASSWORDxxx";

            //上記の設定値はconfigファイルに定義して取得するほうがよい。例↓↓
            //string mailServer = Settings.GetSetting("MailServer");

            //SMTPクライアントを作成
            SmtpClient smtpClient = new SmtpClient(mailServer, mailServerPort);

            //ユーザー名とログインパスワードで認証するnetworkCredentialを作成
            NetworkCredential networkCredential = new NetworkCredential(mailServerUserName, mailServerPassword);
            smtpClient.Credentials = (ICredentialsByHost)networkCredential;

            //メールを送る処理
            smtpClient.Send(message);
        }
    }
}

コード追加が完了したら、サイトを発行して変更内容を反映させます。

3. 動作確認

ページにアクセスして動作確認します。
ページにアクセスすると、メソッドが動作してMailSend.cshtmlが表示されます。
指定したメールアドレス宛にメールが届けばOKです。

次回の記事で実際に「パスワードを忘れた場合に仮パスワードをユーザーに向けてメール送信する」機能も踏まえてご紹介しようと思います。 今回はこの辺で!

参考情報

Sitecore技術ブログ内の以前の記事
メール送信ファンクション - Sitecore技術ブログ



※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。

この記事を読んだ人はこちらの記事も読んでます

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス