スポンサーリンク
今回お遊びとして作った息抜きコンテンツ第一弾として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を作ってみてはいかがでしょうか。
スポンサーリンク
スポンサーリンク