LoginSignup
1
1

More than 5 years have passed since last update.

Node-red でメールアドレスのクレンジングサービスを作ってみた

Last updated at Posted at 2015-12-02

メールアドレスをクレンジング

メーリングリストの管理をしていたり、名簿の整理をしていると、メールアドレスを管理したくなることありますよね。

で、これまでは、毎回シェルスクリプトで uniq, sort とかしてたのですが、前後のカッコを省いたり、コンマや改行を変えたりと、イヤーな感じでした。特にアドレスが重複してたりすると面倒。
また、アドレスを逆順にドメイン毎に整理したい(並べたい)ことってありますよね?

で、今回Node-red の勉強がてら、メールアドレスをクレンジングする Webサービスを作ってみました。

Node-red のサイトにデプロイして "/MailClean" をアクセスすると,以下のフォームが出ます。
このテキストエリアに、適当なメールアドレスを入れます。CC に書いてあるようなのを直接ドカーンと入れるだけで動くはずです。

MailClean.png

お試しあれ。個人的にはとっても便利!
(コードは非常に情けないので読まないデー。。。)

なおコードは、以下を Node-red にインポートしてもらえればOKです。

node
[{"id":"2216a8b6.dde958","type":"http in","name":"MailClean","url":"/MailClean","method":"get","swaggerDoc":"","x":197.51483154296875,"y":253.5407485961914,"z":"f183c3c.f0e7c4","wires":[["63ba28e2.9c45d8"]]},{"id":"ad9bb4a0.526448","type":"http response","name":"","x":587.5148315429688,"y":307.5407485961914,"z":"f183c3c.f0e7c4","wires":[]},{"id":"63ba28e2.9c45d8","type":"template","name":"Form Template","field":"payload","format":"html","template":"<HTML>\n    <head>\n        <title> Mail Address Cleaning</title>\n    </head>\n    <body>\n        \n        Mail Address Cleaning\n        <form method=\"post\">\n            \n            <textarea cols=\"80\" rows=\"50\" name=\"addresses\" >\n                please put mail addresses\n            </textarea>\n            <br>\n            <input type=\"checkbox\" name=\"comma\" />\n            コンマで分割する?\n            <br>\n            <input type=\"checkbox\" name=\"ret\" checked=\"checked\"/>\n            改行する?\n            <br>\n            <input type=\"checkbox\" name=\"rev\" />\n            反転する?\n            <br>\n            <input type=\"checkbox\" name=\"sort\" />\n            ソートする?\n            <br>\n            <input type=\"checkbox\" name=\"uniq\" />\n            uniqする?\n            <br>\n            <button> Doit! </button>\n        </form>\n        \n\n    </body>\n    \n    \n    \n</HTML>","x":397.51483154296875,"y":274.5407485961914,"z":"f183c3c.f0e7c4","wires":[["ad9bb4a0.526448"]]},{"id":"f2cd30c8.0d32d","type":"http in","name":"MailClean POST","url":"/MailClean","method":"post","swaggerDoc":"","x":188.51483154296875,"y":428.5407485961914,"z":"f183c3c.f0e7c4","wires":[["8ff2665c.700d98"]]},{"id":"8ff2665c.700d98","type":"function","name":"Check Mail","func":"var ads = msg.payload.addresses;\nvar com = msg.payload.comma; //コンマ\nvar ret = msg.payload.ret;// 改行\nvar rev = msg.payload.rev;// 反転\n\n//\"<\" \">\" で区切る\n\nvar splitter = /[<>\\r\\n\\t ]/;\n\nvar dds = ads.split(splitter);\n\n// ここかはフィルタ\n\nvar isMail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n\nvar res = [];\n\nfor (var i = 0; i < dds.length; i++){\n    var match=isMail.exec(dds[i]);\n    if(match !== null){\n        res.push(match[0]);\n    }\n}\n\nif(msg.payload.sort ==\"on\"){// sort option!\n    res.sort();\n    //function(a,b){\n    //    if(a < b ) return -1;\n    //    if(b > a ) return 1;\n    //    return 0;\n    //});\n}\n\n\nvar res2=[];\nif(msg.payload.uniq == \"on\"){ // uniq option!\n    var last = \"\";\n    for(var i = 0; i < res.length; i++){\n        if(last != res[i]){\n            res2.push(res[i]);\n        }\n        last = res[i];\n    }\n    res = res2;\n}\n\n\nvar out = \"\";\n\n\n\nfor( var i = 0; i < res.length; i++){\n    if(rev==\"on\") {\n        out = out+res[i].split(\"\").reverse().join(\"\");// 反転文字列を追加\n    }else{\n        out = out+res[i];\n    }\n    if(com==\"on\") out = out +\",\";\n    if(ret==\"on\") out = out+\"\\n\";\n    \n}\n\nmsg.payload = out;\n\nreturn msg;","outputs":1,"noerr":0,"x":322.51483154296875,"y":531.5406875610352,"z":"f183c3c.f0e7c4","wires":[["28841218.d77bee"]]},{"id":"28841218.d77bee","type":"template","name":"Result","field":"payload","format":"html","template":"<HTML>\n    <BODY>\n        <pre>\n{{payload}}\n        </pre>\n    </BODY>\n\n</HTML>","x":376.51483154296875,"y":703.5407333374023,"z":"f183c3c.f0e7c4","wires":[["a8522596.57add8"]]},{"id":"a8522596.57add8","type":"http response","name":"","x":631.5148315429688,"y":716.5406875610352,"z":"f183c3c.f0e7c4","wires":[]}]
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1