仮想通貨EOS相場
EOSJS

メールをトリガーとして仮想通貨EOSを送金する(node.js)(eosjs v16.0.9)

今回お遊びとして作った息抜きコンテンツ第一弾としてnode.jsのeosjsモジュールを使用してのメールが届いて、あるキーワードが文面に入っていたら送金するプログラムを作ってみました。

メールトリガーで送金

今回はeosjs v16.0.9を使用します。

動作内容としてはメール本文に”star”というキーワードが入っていたらEOSを特定のEOSアカウントに送金するというプログラムです。

このプログラムがなにかのヒントになったら幸いです。

#! /usr/bin/node
/* eosjsのモジュールをインポートする */
const Eos = require('eosjs');

/* メールを操作するinboxモジュールをインポートする */
var inbox = require("inbox");
const simpleParser = require('mailparser').simpleParser;

eos = Eos({
    keyProvider: '5K2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',//秘密鍵
    httpEndpoint: 'https://jungle2.cryptolions.io:443',//jungleテストネットAPI接続
    chainId: 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473',//junleテストネットのチェーンID
});

const server = "xxxxx.com" //imapメールサーバーを指定
const user = "xxxxxxxxx@xxxxxxx.com" //メールサーバーログインアカウント
const password = "xxxxxxxxx" //メールサーバーログインパスワード

/* メールサーバーへ接続設定する */
var client = inbox.createConnection(false, server, {
    secureConnection: true,
    auth:{
        user: user,
        pass: password
    }
})

/* メールサーバー接続 */
client.connect();

/* メールサーバー接続の動作 */
client.on("connect", function(){

    console.log ("*** connected ***")

    /* メールサーバーをオープンする */
    client.openMailbox("INBOX", function(error, info){
    /* オープンエラーならばコンソールにエラー内容を表示する */
    if(error) throw error;

    /* メールサーバーの中身を読みに行く(※これがないと新着が表示されなかった) */
    client.listMessages(-10, function(err, messages){});
    
    });
});

/* 新しいメールが届いたら */
client.on("new", function(message){

    /* タイトル、送り主、着信時間をコンソールに表示する */
    console.log(message.title, message.from, message.date, message.UID);
    
    /* メール本文の情報を取得する */
    var stream = client.createMessageStream(message.UID);
 
    /* メール本文内容を読む */   
    simpleParser(stream).then(mail=> {

            /* メールの内容をテキストベースに変換する */ 
            var body = String(mail.text);
            /* メールの内容をコンソールに出力する */ 
            console.log('本文(HTMLテキスト):' + body);

            /* starというキーワードをメール本文から検索する。 */ 
            var result = body.indexOf('star');

            /* starキーワードがあればEOSを送金する */
            if(result != -1){
                transfer("active", "fromaccount1", "toeossend111", 0.0001, "EOS", null);
               }
            /* starキーワードがなければno send!と出力する */
             else{
                console.log('no send!');
               }
                
        })
        .catch(err=> {
            /* エラーならば出力する */
            console.log(err);
        });
});

/* EOSを送金する関数 */
function transfer(sPermission, sSendAccount, sRecAccount, fAmount, sSymbol, sMessage){
 options = {
  authorization:[`${sSendAccount}@${sPermission}`],
  broadcast: true,
  sign: true
 }
 
 var num = new Number(fAmount);
 if(sMessage == null) sMessage = '';
    
    eos.transfer(sSendAccount, sRecAccount, String(num.toFixed(4)) + ' ' + sSymbol, sMessage, options).then(res => {
            console.log('sent: ', res);
        }).catch(err => {
            console.error('error: ', err);
    });
}

まとめ

今回はメール受信時に特定のキーワードが本文に入ってたら仮想通貨EOSを送金するプログラムを作りました。
メール通知プログラムを駆使して面白いdAppsを作ってみてはいかがでしょうか。

EOS初心者おすすめ記事