網頁

Blynk雲端平台的Email工具 按個按鈕自動發一封email



使用Blynk雲端平台的PUSH Notification推播工具製作居家安全防盜提示的文章中,我使用Notification工具去發送按鈕的觸發通知。而我今天要使用Blynk中的Email工具來測試按鈕觸發後,會寄送mail到指定信箱的功能。



基本上在程式碼中,這個工具跟Notification工具很相似。程式碼分成三個區塊,分別為寄件人、主旨、信件內容。官方的Email範例程式碼可以在這裡複製

Blynk.email("my_email@example.com", "Subject", "Your message goes here");

因此mail工具並不像Notification工具一樣,它不一定要在程式中置入一個mail的工具。它只要在程式碼中編譯一組指定的mail,當程式碼被觸發的時候它就會透過這個寄件人<dispatcher@blynk.io>發送信件。


但是如果要指定mail發送到APP中Email工具所登打的位置,那就把程式碼中寄件人的部份給省略掉就可以了,就像以下的程式碼,僅包含主旨與內文的部分,如此一來硬體就會抓取你Blynk APP裡面Email工具的信箱位置寄信:

Blynk.email("Subject", "Your message goes here");

唯一比較困擾的問題是,當我想和Notification工具一樣,嘗試使用中文內文來進行寄信,但是卻出現了亂碼。



而官方每天寄信的上限是100封,每封信間隔至少5秒以上(也不太可能這麼頻繁的寄信)。而信件的長度(使用英文),在我的測試下大概超過1000以上的字元(Bytes)會有無法傳送的現象,雖然官方說可以更改#define BLYNK_MAX_SENDBYTES來改變可傳送的大小,但我測試1200Bytes就無法傳送了,這個要自己實驗看看。

如果需要發送到許多的信箱,可以使用間隔時間的傳送方法,避免5秒內寄多封信被擋的問題,可以參考這個討論串。Multiple email address in email widget

這個功能相較於Notification,好像實用性上少了許多,但想一想它其實可以做一件事,好比在每天早上寄一封mail給你,告訴家裡目前的溫濕度、PM2.5數據,或是在下午寄一份儀器的監控報告,這個工具的實用性就得靠自己去發想了。

舉例我就用光敏電阻模組,接上NodeMCU的AD腳位,當按下按鈕時就會發送光敏電阻的數值到信箱內,我覺得比起單純文字,搭配數據發送的mail會更加有意思。

if (isButtonPressed) // You can write any condition to trigger e-mail sending
{
    int sensorValue = analogRead(A0); // Read the analog in value:
    String thisString = String(sensorValue);
    Serial.println("Button is pressed."); // This can be seen in the Serial Monitor
    Serial.println(sensorValue);
    Blynk.email("Your mail", "Blynk email test by MardDIY", "The sensor value is:(" + thisString + ")");
}