Meteorでメール配備

カテゴリー:Meteor 作成日:2015年4月11日22:08

Meteorでコメントがあったり、BBSで投稿があった場合サイトの管理者(ここでは私)はその事を知りたいと思いました。
そこで、投稿があったらメールで管理者に知らせる為にメール送信機能を組み込みました。
参考サイト Meteorで、メール送信
いつものようにパッケージを組み込む

meteor add email

そして server/mailserver.jsへ自分が使っているsmtpサーバの情報を入力する。

これはGmailの設定例です。
Meteor.startup(function () {

    process.env.MAIL_URL="smtp://メールアドレス:パスワード@smtp.gmail.com:587";
});

このサイトで使ってるBBSの例




client/template/bbs/bbs.html

<template name="bbscomment">
    <span id="labeltitle">お名前<input type="text"   id="bbs_name" value="{{cookie_bbs_name}}"/></span>
    <span id="labeltitle">パスワード<input type="password"  id="bbs_password" value="{{cookie_bbs_password}}"/></span>

    <textarea id="bbscomment_message" class="form-control" rows="6" placeholder="パスワードを入力すると自分のコメントを編集できます。マークダウン使えますが、htmlタグ制限があります 。Aboutを見て下さい。"></textarea>

    <span id="labeltitle">{{randomtext}}</span>  左の数値を入力して下さい  <input type="text" id="random_id" />
    <hr />
    <button id="btn_comment" class="btn btn-info">追加</button>  
</template>

client/template/bbs/bbs.js

Template.bbs.events({
    'click #btn_comment': function(event, template){
        var md5str;
        var randomst = String($('#random_id').val());
        if(randomst !== String(Session.get('bbs_random_text'))) return;
        var bbs_name = $('#bbs_name').val();
        var bbs_password = $('#bbs_password').val();
        var bbs_comment = $('#bbscomment_message').val();
        var mid = Session.get('bbs_mid');
        // パスワードが空白でなければ、 Crypt を使って Base64で暗号化
        if(bbs_password !==''){
             md5str = CryptoJS.MD5(bbs_password).toString(CryptoJS.enc.Base64);
        } else {
            md5str ='';
        }
        if(bbs_name==='' || bbs_comment==='') return;
       //コメントのインサート
        Meteor.call('bbsCommentInsert', mid, bbs_name, md5str, bbs_comment,
            function(err, result){
                if(!err){  // エラーがなければ
                    $('#random_id').val('');
                    $('#bbs_name').val('');
                    $('#bbs_password').val('');
                    $('#bbscomment_message').val('');
                    if(bbs_password !== '') {
                        // クッキーをサイトルートで一年間セット
                        Cookie.set('_cookie_bbs_name', bbs_name, {
                            path: '/',
                            expires: 365
                        });
                        Cookie.set('_cookie_bbs_password', bbs_password, {
                            path: '/',
                            expires: 365
                        });

                    };

                   // メールの送信はここから
                    var maintitle =NewMainBbs.findOne({mid:Session.get('bbs_mid')}).maintitle;
                    var to = 'kiyo@yosiki.org';  
                    var from = 'kiyo@yosiki.org';
                    var subject = 'kiyoSite からメール';
                    var mes = maintitle +' '+bbs_name+ '様からコメントがありました。';
                    // Meteor server methodsのsendEmailをコール
                    Meteor.call('sendEmail', to, from, subject, mes,
                        function (err, result) {
                            if (err) {
                                console.log('メールの送信に失敗');
                            } else {
                                console.log('メール送信 完了');
                            }

                        });

server/server.js

Meteor.methods({
    //メールの送信
    'sendEmail': function(to, from, subject, text){
        check([to, from, subject, text], [String]);
        // 同じクライアントからの、ほかのメソッド呼び出しが
        // メール送信完了を待つことなく実行が開始されるように
        // 設定します。
        this.unblock();
        Email.send({
            to: to,
            from: from,
            subject: subject,
            text: text
        });
    }
});

コメントを投稿する


お名前:Papasan 作成日:2024年1月23日22:41

おおっ!!、ありがたや~。
もう少しMeteorアプリの作法をお勉強して実力がついたら、組み込みたいと思います。
Owaさんも、早くMeteorに入ってほしいですねぇ!!

お名前:kiyo 作成日:2024年1月23日22:43

/>もう少しMeteorアプリの作法をお勉強して実力がついたら
私も手探りと言うかグーグルさんからパクリマンです。