ESP-WROOM-02(ESP8266)でメールが送れる!?のスケッチ公開!

ESP-WROOM-02(ESP8266)でメールが送れる!?のスケッチ公開!

メールが送れるESP-WROOM-02(ESP8266)のスケッチを公開したいと思う。
WifiClientという雛形を変更したものだ。

ハードウェアは、秋月電子のAE-UM232RとESP-WROOM-02を接続し、他に抵抗、コンデンサ、タクトスイッチなどの部品少々という感じ。
スイッチサイエンスのモジュールだったら、ハードウェアを組み立てる手間はいらない。

ターミナルソフトでESP-WROOM-02と接続し、ターミナルソフト上で「S」という文字を送ると、メールサーバーと通信しはじめて、「ESP-WROOM-02からテストメール」というタイトルのメールを送る。
おいらの場合は、AUTH PLAINだったけれど、プロバイダーによっては、AUTH LOGINだったりして、ID・パスワードの送信の仕方が異なることもある。
各自telnet接続して自分の環境を確かめてほしい。
ID・パスワードは自分の物に書き換えること。

#include <ESP8266WiFi.h>

const char* ssid = "SSID";
const char* password = "パスワード";

const char* host = "ドメイン";
const char* auth_pass = "ユーザー名\0ユーザー名\0メールパスワード";

const char* mail_from = "差出人のメールアドレス";
const char* rcpt_to = "宛先のメールアドレス";

const char* subj = "ESP-WROOM-02からテストメール";

const int httpPort = 587; //SMTPサーバーがポート587を使っている場合

int value = 0;

WiFiClient client;

void ReadLoop(){

    while(client.available()){
      String line = client.readStringUntil('\r');
      Serial.print(line);
    }

}

void setup() {
  Serial.begin(115200);
  delay(10);

// We start by connecting to a WiFi network

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {

  if (Serial.available() > 0) {
    byte inByte = Serial.read();
    if (inByte == 'S')
    {

      delay(5000);
      ++value;

      Serial.print("connecting to ");
      Serial.println(host);

// Use WiFiClient class to create TCP connections

     if (!client.connect(host, httpPort)) {
       Serial.println("connection failed");
       return;
     }

    client.print("ehlo ");
    client.println(host);
    ReadLoop();
    delay(1000);

    client.println("AUTH PLAIN");
    ReadLoop();
    delay(3000);

    client.println(auth_pass);
    ReadLoop();
    delay(1000);

    client.print("mail from:");
    client.println(mail_from);
    ReadLoop();
    delay(1000);

    client.print("rcpt to:");
    client.println(rcpt_to);
    ReadLoop();
    delay(1000);

    client.println("data");
    ReadLoop();
    delay(1000);

    client.print("From:");
    client.println(mail_from);
    ReadLoop();
    delay(1000);

    client.print("To:");
    client.println(rcpt_to);
    ReadLoop();
    delay(1000);

    client.print("subject:");
    client.println(subj);
    ReadLoop();
    delay(1000);

    client.println("");
    client.println("メールのテスト送信ですよ~");
    ReadLoop();
    delay(1000);

    client.println(".");
    ReadLoop();
    delay(1000);

    client.println("quit");
    ReadLoop();

    Serial.println();
    Serial.println("closing connection");
    }
  }
}

【2021.3.7】やっとプログラムの表示がまともにできるプラグインをブログに導入。コピーボタンもあるので、サクッとお試し可能!!