メール送信サーバの作成
リクエストパラメータからユーザIDとパスワードを抜き出して、認証を行い、SendGridというメール配信サービスを使って、指定のメールアドレスにメールを送るというものです。
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;
using SendGrid;
namespace FelicaMail
{
public partial class FelicaMail : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String userid = Page.Request.QueryString.Get("user_id");
String password = Page.Request.QueryString.Get("password");
String mailaddress = Page.Request.QueryString.Get("mail_address");
//ユーザIDとパスワードをリクエストパラメータから拾っているので、誰でもメールの送信ができないように簡易認証をかける実装を書きます。
//実装は各人で工夫してください。
Send_Mail(mailaddress);
}
private void Send_Mail(String mailaddress)
{
// Create the email object first, then add the properties.
var myMessage = new SendGridMessage();
myMessage.AddTo(mailaddress);
myMessage.From = new MailAddress("hoge@koneko.tokyo", "こねこまろ");
myMessage.Subject = "カード情報の一致を確認しました";
myMessage.Text = "こんにちは。FelicaMailシステムから送信しています。";
// Create credentials, specifying your user name and password.
var credentials = new NetworkCredential("SendGridのユーザネーム", "SendGridのパスワード");
// Create an Web transport for sending email.
var transportWeb = new Web(credentials);
// Send the email, which returns an awaitable task.
transportWeb.DeliverAsync(myMessage);
// If developing a Console Application, use the following
// transportWeb.DeliverAsync(mail).Wait();
}
}
}
1.Visual Studioで、ASP.NET Webアプリケーションのプロジェクトを作ります。
2.Web Formsを選択します。
3.フォームを追加します。名前は、FelicaMailとしておきましょう。以後統一名称として話を進めますので、異なる名称を付けた場合には読み替えてください。
4.Nugetインストーラで、"SendGrid"と"SendGrid.Net40"というパッケージを追加インストールし、usingディレクティブに"using SendGrid;"を書いておく。
1.コーディング解説
実装:FelicaMail.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
String userid = Page.Request.QueryString.Get("user_id");
String password = Page.Request.QueryString.Get("password");
String mailaddress = Page.Request.QueryString.Get("mail_address");
//ユーザIDとパスワードをリクエストパラメータから拾っているので、誰でもメールの送信ができないように簡易的な認証をする実装を書きます。
//実装は各人で工夫してください。
Send_Mail(mailaddress);
}
上記は、このアプリケーションが想定しているリクエストパラメータです。
user_id、passwordは簡易的な認証用で、合致を確認したときのみメールを送信するSend_Mailメソッドを実行するようにします。
Send_Mailメソッドは、mailaddressを引数として受け取ります。リクエストパラメータで取得したメールアドレスを渡します。
※注意事項
ユーザIDとパスワードをリクエストパラメータから拾っているので、誰でもメールの送信ができないように簡易的な認証をする実装を書きます。
実装は各人で工夫してください。
private void Send_Mail(String mailaddress)
{
// Create the email object first, then add the properties.
var myMessage = new SendGridMessage();
myMessage.AddTo(mailaddress);
myMessage.From = new MailAddress("hoge@koneko.tokyo", "こねこまろ");
myMessage.Subject = "カード情報の一致を確認しました";
myMessage.Text = "こんにちは。FelicaMailシステムから送信しています。";
// Create credentials, specifying your user name and password.
var credentials = new NetworkCredential("SendGridのユーザネーム", "SendGridのパスワード");
// Create an Web transport for sending email.
var transportWeb = new Web(credentials);
// Send the email, which returns an awaitable task.
transportWeb.DeliverAsync(myMessage);
}
myMessage.AddTo(mailaddress);
メールの送付先アドレスを指定します。
myMessage.From = new MailAddress("hoge@koneko.tokyo", "こねこまろ");
メールの差出人と、差出人のメールアドレスを指定します。
myMessage.Subject = "カード情報の一致を確認しました";
メールの件名を指定します。
myMessage.Text = "こんにちは。FelicaMailシステムから送信しています。";
メール本文を書きます。
var credentials = new NetworkCredential("SendGridのユーザネーム", "SendGridのパスワード");
SendGridのユーザネームとパスワードを引数としてセットします。
var transportWeb = new Web(credentials);
transportWeb.DeliverAsync(myMessage);
上記でセットしたSendGridのNetworkCredentialを引数にしてWeb型の変数を作り、
同じく上記でセットした送信メール情報を引数として渡し、SendGridへ送信指示を出します。
以上となります。