メニューを閉じる

テクノデジタルグループ

メニューを開く

2015.10.13

プログラミング

mbedでSMTPによるメール送信 2015

GTラボ坂東です。

先週末はMashupAwards11の徳島イベントが有ったので参加してきました。

Mashup Awards 11 ハッカソン予選徳島〜IoT×APIでMashup!〜 #MA11
https://mashupawards.doorkeeper.jp/events/31279

田舎にナショナルブランドなイベントを引っ張ってきてくれる皆様に感謝。けど県内IT企業の参加者が少なくて寂しい。行政案件にはこういう場で築ける知識や人脈は必要ないんでしょうけれども。
テクノモバイルからは3名出ましたよ。徳島で先端や前例無い案件がありましたら是非とも㈱テクノモバイルにご相談下さい。

今回はIoTということでハードウェアプロトタイピングキット「mbed」を持ったARMさんが来てて、使わせていただくことに。
https://developer.mbed.org/users/nxpfan/notebook/lets_get_started_jp/

さくさくとボードにチップ挿して、MacとUSB接続して、Eclipseのようなクラウド上の統合環境でCでコード書いて、コンパイルしたバイナリを、ドラッグ&ドロップでコピー。10分でLEDチカチカしたりPCにフィードバックしたりできた。
私が高専に居た20年前はポケコン繋いでZ80アセンブラを流しこんでてエラーがあるとブザーがべーと言ってアセンブラの分けわかんない英数字の羅列翻訳して流し込みなおして…それに比べると隔世の感ですね。
練習で「温度センサーの数値をメール送信する」というのをやってたところ「メール送信をする」部分でハマったので共有します。

  1. ライブラリのバージョンが古いと動かない
    「mbed  チップ名」でググッてライブラリを見つけて、統合環境に「インポート」するのが簡単な開発手法のようです。
    メール送信のに関してはチップがあるわけではないので「mbed  SMTP」でググッて見つかった適当なライブラリを組み込むもコンパイルが通らない。ライブラリが2010年製と古くて現行のmbedとはネットワーク周りの実装が異なるようです。
    動いたのは「SimpleSMTPClient」でした。ググるんじゃなくコンパイラーから「インポート」→「ライブラリ」→「smtp」で検索すると簡単に入れられます。
  2. Wifi経由で送れない
    私のボードは村田製作所のWifiチップでネットに接続してんですけれどSimpleSMTPClientは有線(Ethernet)を前提としているので動かない。
    includeをWifiライブラリのものに置き換えると動きました。

    SimpleSMTPClient.h および SimpleSMTPClient.cpp
    #include "EthernetInterface.h"
     ↓
    #include "SNIC_WifiInterface.h"
    #include "TCPSocketConnection.h"
  3. サンプルコードが無い
    念入りにググらないとサンプルが見つからなかったので置いておきますね。

    #include "SimpleSMTPClient.h"
    SimpleSMTPClient smtp;
    int main() {
      int ret;
      smtp.setFromAddress("from@gtlab.jp");
      smtp.setToAddress("to@gtlab.jp");
      smtp.setMessage("subject","body\r\n");
      ret = smtp.sendmail("smtp.gtlab.jp", "from@gtlab.jp", "password", "smtp.gtlab.jp","587",SMTP_AUTH_PLAIN);
      if (ret) {
        printf("E-mail Transmission Era-\r\n");
      } else {
        printf("E-mail Transmission Sakusesu\r\n");
      } 
    }
  4. セキュリティに引っかかる
    凝った認証に対応できていないみたいで、gmailのsmtpは通らず、ゆるいYahooメールのsmtpにしたら送れました。

私はアプリ屋なんでIoTと言われても発想が出ないんですけれど、単純に面白いので色々やってみたいと思いまう。スマホに搭載されていない温度や距離のセンサーが楽しげです。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事