メール送信サーバの作成



【概要】:
リクエストパラメータからユーザ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へ送信指示を出します。


以上となります。