The project of U-WA-
http://uwa.potetihouse.com/
戻る
TKMP.DLL   プログラミングTips

通信を暗号化する(受信編)

.NET Framework 2.0専用
 ログオン処理にAPOPを使用するとパスワードについては暗号化されますが、実際のメールの内容は暗号化されないままになってしまいます。この問題を解決するために、POP over SSL/TLSという手法を使用します。
 幾つかの点に注意すれば、TKMPでは特に難しい設定も無く実装することが可能です。プログラムの手順としては、TKMP.Net.PopClientクラスでConnectメソッドを実行する前にAuthenticationProtocolプロパティに使用する暗号化の方法を指定するだけです。以下のサンプルでは、SSLでPOPサーバーと接続するようにしています。また、暗号化が使用できるかわからないときにAuthenticationProtocols.TryTLSを指定することで、POPサーバーがPOP over TLSに対応している時のみ暗号化通信を行うことも可能です。
 実際に暗号化する場合の注意点は
・POPサーバーがPOP over SSL/TLSに対応していること
・POP over SSLを使用する場合は通常ポート番号は993になる
・POPサーバーの証明書の検証に失敗した場合に独自に検証する必要がある
C#.NET
public void Open()
{
    //接続情報
    string server = "mail.example.jp";
    int port = 993;
    string userid = "userid";
    string pass = "pass";

    //サーバへの接続用クラスを作成する
    TKMP.Net.IPopLogon logon = new TKMP.Net.BasicPopLogon(userid, pass);
    TKMP.Net.PopClient pop = new TKMP.Net.PopClient(logon, server, port);

    //SSLを使用します
    pop.AuthenticationProtocol = TKMP.Net.AuthenticationProtocols.SSL ;
    //証明書に問題があった場合に独自の処理を追加します
    pop.CertificateValidation += new TKMP.Net.CertificateValidationHandler(pop_CertificateValidation);

    //接続開始
    if (!pop.Connect())
    {
        System.Windows.Forms.MessageBox.Show("接続失敗");
        return;
    }

    //着信件数の読み出し
    int mailcount = pop.MailDatas.Length;
    System.Windows.Forms.MessageBox.Show("着信メールは " + mailcount.ToString() + " 件です");

    //切断
    pop.Close();
}

private void pop_CertificateValidation(object sender, TKMP.Net.CertificateValidationArgs e)
{
    //全ての証明書を信用します
    e.Cancel = false;
}
VB.NET
Public Sub Open()
    '接続情報
    Dim server As String = "mail.example.jp"
    Dim port As Integer = 993
    Dim userid As String = "userid"
    Dim pass As String = "pass"

    'サーバへの接続用クラスを作成する
    Dim logon As New TKMP.Net.BasicPopLogon(userid, pass)
    Dim pop As New TKMP.Net.PopClient(logon, server, port)

    'SSLを使用します
    pop.AuthenticationProtocol = TKMP.Net.AuthenticationProtocols.SSL
    '証明書に問題があった場合に独自の処理を追加します
    AddHandler pop.CertificateValidation, AddressOf pop_CertificateValidation

    '接続開始
    If Not pop.Connect() Then
        System.Windows.Forms.MessageBox.Show("接続失敗")
        Return
    End If

    '着信件数の読み出し
    Dim mailcount As Integer = pop.MailDatas.Length
    System.Windows.Forms.MessageBox.Show(("着信メールは " + mailcount.ToString() + " 件です"))

    '切断
    pop.Close()
End Sub

Private Sub pop_CertificateValidation(ByVal sender As Object, ByVal e As TKMP.Net.CertificateValidationArgs)
    '全ての証明書を信用します
    e.Cancel = False
End Sub
VB.NETのコードはC#.NETを元に「C#.NET to VB.NET Translator」によって作成したものです

トップページへ移動
The project of U-WA-
http://uwa.potetihouse.com/