Node.jsは登録メールボックスの活性化機能を実現します.

6041 ワード

今日はnodeがどのようにメールボックスのアクティブ化機能を実現するかを知りました.この機能は非常によくあります.アカウントを登録すると、必ずこのステップがあります.どうやってこの機能を実現するかを見てみます.
まず認証メールを送るメールボックスを登録してください.網易の126メールでいいです.
登録が成功したら登録して、ナビゲーションバーの設定をクリックして、POP 3/SMTP/IMAPを選択して、POP 3/SMTP/IMAPサービスをオープンして、ライセンスコードを設定すればいいです.
二.nodemailプラグインをダウンロードする
コマンドラインに入力:npm install --save nodemailer三.送信メールコードの作成:
1.送信アクティブなメールコードをカプセル化してエクスポートします.
//email.js

//    nodemailer
var nodemailer = require('nodemailer');

//     SMTP     
var config = {
        host: 'smtp.126.com', 
        port: 25,
        auth: {
            user: '[email protected]', //         
            pass: 'xxxxxx'  //      ,        
        }
    };

//     SMTP     
var transporter = nodemailer.createTransport(config);

//     
module.exports = function (mail){
    transporter.sendMail(mail, function(error, info){
        if(error) {
            return console.log(error);
        }
        console.log('mail sent:', info.response);
    });
};
2.テストを行う:
//sendtest.js

var send = require('./mail-test');


//         
var mail = {
    //    
    from: '     ',
    //   
    subject: '  ',
    //    
    to: '[email protected]',
    //     ,HTML  
    text: '    :xxx' //         
};
send(mail);
成功すればテストのメールボックスで送った情報を見ることができます.
四.検証手順
私が以前書いた個人ブログのプロジェクトについて簡単に説明します.メールの検証はどうやって実現しますか?
1.自分で定義したデータベースユーザのデータ構造には必ずアクティブコード、有効期限切れ時間、アクティブかどうかを判断するフィールドが必要です.
{
    code: String,  //   ,      
    date: Number, //    ,       
    islive: Boolean //      
}
2.アクティブリンクを送信します.以下のように、ユーザ名とアクティブコードが含まれます.
//         
    var mail = {
        //    
        from: '     ',
        //   
        subject: '    ',
        //    
        to: usermess.email, //           
        //     ,HTML  
        text: '    :'&code='+ usermess.code + '">'
    };
3.活性化要求に応答して、リンクをアクティブにしているユーザ名に基づいて検索を行い、ユーザが存在すると、アクティベーションコードが一致するかどうかを判断し、アクティベーションコードが有効期限切れであるかを判断し、すべて正しいとアクティブ状態が変更され、このときアクティブになりました.
exports.checkCode = function (req, res){
    var username = req.query.name;
    var code = req.query.code;
    var outdate = req.query.outdate;
    User.findOne({name: username}, function (err, user){
        if (user.code === code && (user.date - Date.now()) > 0){
            User.update({name: username}, {islive: true}, function (err){
                if (err){
                    res.render('login', {
                        title: '  ',
                        error: '    !'
                    });
                }else{
                    res.render('login', {
                        title: '  ',
                        error: '       !'
                    });
                }
            });
        }
    });
}
大体のステップはこのようにして、興味がある人は試してみてもいいです.