パスワードを忘れた時に、ユーザーに仮パスワードをメールで送信したい場面があったので、「まずはメールを送るのってどうやるんだ?」と思い調べてみました。
今回の記事は以前執筆したこちらの記事 を参考にして、実際にやってみた的な記事になります。
テスト環境
- 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のバージョンによって実装されている機能が異なります。