Hello and welcome to my first Instructable.

I will show you how to send emails from any ESP8266 wifi module using Gmail server.

This instructable relies on Arduino core for ESP8266 WiFi chip,

which makes a self-contained microcontroller from it (no need of AT commands and master devices).

You can connect sensors and get notified by email about changes.

Before we begin

Required hardware:

  1. Any ESP8266 (I'm using ESP8266-07 ebay link).
  2. In my case USB UART Board(I'm using FT232RL FTDI Serials Adapter Module ebay). Not needed if your board has usb port.
  3. Some jumper cables.
  4. WIFI router of course.

List may be incomplete.

Required software:

  1. Arduino Software
  2. Arduino core for ESP8266 WiFi chip
  3. Sketch with project and test code (ESP8266_Gmail_Sender.zip).

Step 1: Gmail Account Setup

We are going to use SMTP to send messages.

Using SMTP Authentication we provide only email and password,

by default Google uses more complex verification methods so we need to change settings.

Go to your Google account settings and enable "Allow less secure apps" at the bottom of the page.

This mean apps only need your email and password when login to your gmail account.

If you concerned about security, just use different account.

Step 2: Edit Sketch

I wrote a little sketch which send one test message to check if all works as should.

When all software downloaded and installed:

  • Unzip ESP8266_Gmail_Sender.zip
  • Find and open ESP8266_Gmail_Sender.ino
  • Set your wifi access point name (SSID) and password. Should be like this:
const char* ssid = "MyWiFi";
const char* password = "12345678";
  • In setup() function find
if(gsender->Subject(subject)->Send("boris.on@live.com", "Setup test"))

first parameter of Send function is recipient email, second message text.

Change recipient from <boris.on@live.com> to your email which will receive message.

Subject function is optional! Subject sets once and stored until you change it.

You can send mails without subject or if it already set

gsender->Send(to, message);
  • Now open Gsender.h tab
  • We need Base64 encoded email address and password of gmail account which will be used to send emails.

You can use base64encode.org for encoding, result must be something like:

const char* EMAILBASE64_LOGIN = "Y29zbWkxMTExMUBnbWFpbC5jb20=";
  • Now set FROM field.
const char* FROM = "your_email@gmail.com";

That`s all for this part.

Step 3: Code Uploading and Testing

Save changes. Don`t forget to set your board in Tool menu.

Upload sketch to your ESP8266 board.

Open Serial monitor, board will print log messages.

That`s all I hope you will receive "Message send.". Thanks...
<p>Hi.</p><p>I uploaded the code into my ESP8266 and it has been working perfectly for the past few days. But when I try it today, it is giving me the error &quot;Cannot connect to mail server&quot;... I tried with new email address but still not working. Please help me.</p><p>Thanks!</p>
Hi<br>Great for sending gmails <br><br>I added a few yields() and now it works without WDT reboots, even for my larger emails 3kB<br><br>One question - I have 1000 IOT units sending email once a day , most likely at the same time, at least within 5 minutes - I assume gmail will not work correctly or block the account if they all access the same minute, or?<br><br>How can it be done so that all devices still can use one mail account and send daily ping emails to user?<br><br>Great work sharing the gmail sender !!<br>
<p>Hi TobbeG - I'm having the same issue, but am not as advanced as you...can you provide some more specifics about how you avoided this error?</p>
<p>Hi DaveJ1<br><br>I redesigned this thing moving it to SMTP2GO which allows all my IOT devices to use the same smtp server and not having to go through creating a gMail account. <br><br>Have a look here :<br><a href="https://playground.arduino.cc/Code/Email" rel="nofollow">https://playground.arduino.cc/Code/Email</a></p><p>Setting up a SMTP2GO account is easy, and you get 1000 emails/month for free.</p>
<p>great job!</p><p>I used it for sending pir and flame sensors notifications.it works good but i have a problem that sending email successively while pins are high.would you please help me ?</p>
<p>I think you need something like this:</p><p>int Astate = 0;</p><p>int lastAState = 0;</p><p>Astate = digitalRead (A);</p><p>if (Astate != lastAState)</p><p>{</p><p>if (AState == HIGH){</p><p>send mail</p><p>}</p><p>else {}</p><p>lastAState = AState;</p><p>This is a single-shot high type code...once the code goes high, it activates the IF. You can put a negative statement in the ELSE if you want to see when it goes Low (I'm struggling myself with the email send part...not sure if you can have two mail send commands).</p>
Great i'ble, it worked out of the box for me, but I'm trying to include the &quot;send mail&quot; functionality into another sketch that is already up and running. I tried to copy out only the GSender portion of the code, since the rest of the code handles the WiFi connection, and my other sketch already takes care of that. My plan was to tuck in that section of your Gmail code into an &quot;IF&quot; statement of my other one, so if the condition is met, an email is sent. Instead, however, I get a Stack error (Exception 29). I see others have gotten this too, and research on the internet shows it's waaay over my head. Is there a better way to modify your code so that it only sends when desired?
<p>Works great, there is a javascript function if one needs that, so it's easy to encode strings in the browser console instead of using some external services for login and pwd. </p><p>In JS or console: btoa(&quot;password&quot;);</p><p><a href="https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding" rel="nofollow">https://developer.mozilla.org/en-US/docs/Web/API/W...</a></p>
<p>Thanks a lot buddy. I was searching all day long</p>
<p>Well done. I have sent mail using a 3rd party mailservice (3rd as in 'besides google') to send from my google account, but I know that in the past, with an arduino I had been able to do it directly. You made it happen.<br>As I just stumbled upon your code, I haven't tried it yet, but I know that some mail mail servers on receiving are a bit picky regarding the domain the mail is coming from and if your IP address is not known as belonging to Google, they may reject the mail as undeliverable.<br>That is no shortcoming of your code, but it is good to take into account when people experience rouble in getting their mail delivered</p>
<p>please help i got this error</p><p>535-5.7.8 Username and Password not accepted. Learn more at</p><p>Error sending message: SMTP AUTH error</p>
<p>gogoxgogo -- Did you find a way to solve the &quot;username and password not accepted&quot; problem? I would greatly appreciate any hint you can provide. I have done all the tricks that have been mentioned on this site and many otehr blogs, but I cannot get it to work. Thanks</p>
no<br>but this one is working<br>https://youtu.be/znFMNzT_Gms
<p>gogoxgogo -- Thank you for the reply and the link to a great YouTube Video. I am following it.</p>
<p>gogoxgogo -- I figured out what I was doing wrong. Please see my latest reply to Borya. You have to put the login and password of the gmail account in the body of the Gsender library, not in the body of the sketch. Mine works now. Thanks to Borya, I feel I have grown a new set of wings.</p>
<p>You figured it out by yourself excellent.</p>
<p>Hi! I just spent 2 minutes to check if its still works, and it works great for me.</p><p>Connection: ESTABLISHED<br>Got IP address:<br>220 smtp.gmail.com ESMTP g24sm1253499ljg.11 - gsmtp<br><br>250 smtp.gmail.com at your service<br><br>334 VXNlc........./*some symbols here looks like key*/<br><br>334 UGFzc3......../*some symbols here looks like key*/</p><p><br>235 2.7.0 Accepted<br><br>250 2.1.0 OK g24sm1253499ljg.11 - gsmtp<br><br>250 2.1.5 OK g24sm1253499ljg.11 - gsmtp<br><br>354 Go ahead g24sm1253499ljg.11 - gsmtp<br><br>250 2.0.0 OK 1493414890 g24sm1253499ljg.11 - gsmtp<br><br>221 2.0.0 closing connection g24sm1253499ljg.11 - gsmtp<br><br>Message send.</p><p>If you have some problems please read carefully whole instructable again.</p><p>Double check: </p><p>1. did you allowed Less secure apps in your gmail account?</p><p>2. Is your credentials correct? As I wrote use <em>base64encode.org to</em></p><p> encode your login and password, it should to somethisng like this:</p><p> const char * EMAILBASE64_LOGIN = &quot;Tdd23lOp9ya532WwuY29t&quot;;<br> const char* EMAILBASE64_PASSWORD = &quot;IGh4KFloTldGH0u&quot;;</p><p>3. If none of above will not help you can send me your code and I will try to help you.</p>
<p>Borya, Hi</p><p>I found out what I was doing wrong. Instead of putting the login name and password of the gmail account in the Gsender library, I had put it in the main sketch. I am an old man trying to learn Arduino programming, and I did not know how to open a tab for the library. Anyway, it works now. Thank you so much.</p>
<p>I could send it with Wemos D1.</p><p>I want to put a &quot;CRLF&quot; in the message text, so please let me know.....</p><p>&gt;&gt;&gt;</p><p>String content = &quot;&quot;;</p><p>content += &quot;sensorValue = &quot;;</p><p>content += sensorValue;</p><p>content += &quot;\r\n&quot;;   //CRLF code was ignore.</p><p>content += &quot;outputValue = &quot;;</p><p>content += outputValue;</p><p>if(gsender-&gt;Subject(subject)-&gt;Send(&quot;MyE-mail@address&quot;, content ))<br></p><p>.&lt;&lt;&lt;</p>
<p>Hello, do you finally find a way to have CRLF in the body message ?</p>
<p>Hello, sorry for really late reply.</p><p>What is your email massage to web browser???</p><p> Its HTML document. </p><p>Does HTML understand CRLF???</p><p>I guess not.</p><p>So you should use HTML tag &lt;p&gt;Text from new line!&lt;/p&gt; </p><p>or &lt;br&gt; a line break.</p>
<p>Borya -- Thank you for getting back to me so quickly. You are very smart and a very nice guy at the same time. That is a wonderful combination. I have enabled the Less Secure Apps in my gmail account, and I checked it again and again. I used the base64encode for both the login gmail address and the email password, and I did it about 10 times to make sure it was correct. I still get this:</p><p>...........</p><p>Connection: ESTABLISHED</p><p>Got IP address:</p><p>220 smtp.gmail.com ESMTP h34sm1321168otb.39 - gsmtp</p><p>250 smtp.gmail.com at your service</p><p>334 VXNlcm5hbWU6</p><p>334 UGFzc3dvcmQ6</p><p>535-5.7.8 Username and Password not accepted. Learn more at</p><p>Error sending message: SMTP AUTH error</p><p>Here is the code. I have changed the SSID, its passowrd, Login email address and password. I tried to use your code as much as possible. </p><p><br>#include &lt;Gsender.h&gt;<br>#include &quot;ESP8266WiFi.h&quot;<br><br><br>#pragma region Globals<br>const char* ssid = &quot;MyHomeSSID&quot;; // WIFI network name<br>const char* password = &quot;MyHomePassword&quot;; // WIFI network password<br>uint8_t connection_state = 0; // Connected to WIFI or not<br>uint16_t reconnect_interval = 10000; // If not connected wait time to try again<br>#pragma endregion Globals<br><br>uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr)<br>{<br> static uint16_t attempt = 0;<br> Serial.print(&quot;Connecting to &quot;);<br> if(nSSID) {<br> WiFi.begin(nSSID, nPassword); <br> Serial.println(nSSID);<br> } else {<br> WiFi.begin(ssid, password);<br> Serial.println(ssid);<br> }<br><br> uint8_t i = 0;<br> while(WiFi.status()!= WL_CONNECTED &amp;&amp; i++ &lt; 50)<br> {<br> delay(200);<br> Serial.print(&quot;.&quot;);<br> }<br> ++attempt;<br> Serial.println(&quot;&quot;);<br> if(i == 51) {<br> Serial.print(&quot;Connection: TIMEOUT on attempt: &quot;);<br> Serial.println(attempt);<br> if(attempt % 2 == 0)<br> Serial.println(&quot;Check if access point available or SSID and Password\r\n&quot;);<br> return false;<br> }<br> Serial.println(&quot;Connection: ESTABLISHED&quot;);<br> Serial.print(&quot;Got IP address: &quot;);<br> Serial.println(WiFi.localIP());<br> return true;<br>}<br><br>void Awaits()<br>{<br> uint32_t ts = millis();<br> while(!connection_state)<br> {<br> delay(50);<br> if(millis() &gt; (ts + reconnect_interval) &amp;&amp; !connection_state){<br> connection_state = WiFiConnect();<br> ts = millis();<br> }<br> }<br>}<br><br>void setup()<br>{<br> Serial.begin(115200);<br> connection_state = WiFiConnect();<br> if(!connection_state) // if not connected to WIFI<br> Awaits(); // constantly trying to connect<br><br> Gsender *gsender = Gsender::Instance(); // Getting pointer to class instance<br> const char* EMAILBASE64_LOGIN = &quot;encodedvalueofloginemailaddresofgmail&quot;;<br>const char* EMAILBASE64_PASSWORD = &quot;encodedvalueofemailpassword&quot;;<br> <br> <br> const char* FROM = &quot;myfisrtaddress@gmail.com&quot;;<br> <br> String subject = &quot;Alert from iot of Kam&quot;;<br> if(gsender-&gt;Subject(subject)-&gt;Send(&quot;anotheraddress@gmail.com&quot;, &quot;This alert is sent from iot of Kam due to event&quot;)) {<br> <br> <br> Serial.println(&quot;Message send.&quot;);<br> } else {<br> Serial.print(&quot;Error sending message: &quot;);<br> Serial.println(gsender-&gt;getError());<br> }<br>}<br><br>void loop(){}</p><p>Thank you so much for taking time to help me.</p>
TKS great job,<br>Work perfect
<p>Brilliant work.. Thanks for it.. I made it successfully :)</p>
<p>Brilliant piece of code. It works like a charm.</p><p>Thank you for this.<br><br>Alain</p>
<p>Wow, that's great !</p><p>Less than 10 minutes to send the first email from my eps (WeMos D1 R2), your code is very nice.</p>
<p>Thank you!It is working! and how receive messages on ESP?P.S. sorry for my bad English - I am from Ukraine</p>
<p>Hi guys. I have done everything but when i try to upload the sketch the error is:</p><p>warning: espcomm_sync failed</p><p>error: espcomm_open failed</p><p>error: espcomm_upload_mem failed</p><p>error: espcomm_upload_mem failed</p><p>Can someone help me to find a way?</p>
<p>Before uploading conect GPIO 0 to ground and restart your esp.</p>
<p>smtp.gmail.com does not communicate without encryption. </p><p>This is possible using OpenSSL command:</p><p><strong>s_client -connect smtp.gmail.com:465</strong></p><p>This returns a whole load of jargon. Next command:</p><p><strong>AUTH LOGIN</strong></p><p>from here on you enter all your details etc.</p><p>So how could this instructable ever possibly work?</p>
<p>Thanks. I made it and it worked great. I was looking for a way to send an email</p><p>To notify me if there was a problem at a remote site without having the be linked to the server constantly. Instructions were clear and concise.</p>
<p><a href="https://www.instructables.com/member/Borya" rel="nofollow">Borya</a> thank you, it's working ;) </p>
<p>Hi guys. I'm new here. I have done everything but when i try to upload the sketch the error is:</p><p>warning: espcomm_sync failed</p><p>error: espcomm_open failed</p><p>error: espcomm_upload_mem failed</p><p>error: espcomm_upload_mem failed</p><p>Can someone help me to find a way?</p><p><a rel="nofollow">[delete]</a></p>
<p><a href="https://www.instructables.com/member/sellh" rel="nofollow">sellh</a> try conect GPIO0 pin to GND </p>
<p>Hi, i have a problem.</p><p>Error sending message: SMTP AUTH error</p><p>What now ?</p><p>Thanks</p>
<p>I solved it myself........</p><p>&gt;&gt;&gt;</p><p>String content = &quot;&quot;;</p><p>content += &quot;sensorValue = &quot;;</p><p>content += sensorValue;</p><p>content += &quot;&lt;BR&gt;&rdquo;;   //htm &lt;br&gt; code was success.</p><p>content += &quot;outputValue = &quot;;</p><p>content += outputValue;</p><p>if(gsender-&gt;Subject(subject)-&gt;Send(&quot;MyE-mail@address&quot;, content ))</p><p>Thanks,</p>
Hi @Borya<br>How can I send an integer and string variable instead of a text defined in the message content?<br>if(gsender-&gt;Subject(subject)-&gt;Send(&quot;boris.on@live.com&quot;, &quot;HERE&quot;))<br>
<p>Hi! If you want something like this &quot;value = 1&quot;, try this one</p><p><strong>int</strong> <em>var</em> = 1;<br> <strong>String</strong> <em>str</em> = &quot;value = &quot;;<br> gsender-&gt;Subject(subject)-&gt;Send(&quot;email&quot;, <strong><em>str</em></strong> + <strong><em>var</em></strong>);</p>
<p>It's just what I needed, thank you very much @Borya</p>
<p>Hi @Borya<br><br>I have added rBase64 to calculate Base64 at runtime and it works fine sending me shorter emails when the device boots. </p><p>However, when I am sending somewhat longer emails, ca 3kB, it always crashes and I have aded yield(); all over the place w/o success.<br><br>Can you help me find out whats going wrong??</p><p>MUCH appreciated function which I would like to fully use too !<br></p><p>Thanks for your help - Thorbj&ouml;rn</p><p>Exception (29):</p><p>epc1=0x4000e1b2 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000100 depc=0x00000000</p><p>ctx: cont </p><p>sp: 3fff3f60 end: 3fff4540 offset: 01a0</p><p>&gt;&gt;&gt;stack&gt;&gt;&gt;</p><p>3fff4100: 00000040 3fff565c 40212d60 402311af </p><p>3fff4110: 3fffa4a4 3fff565c 3fff6f2c 40231348 </p><p>3fff4120: 00000000 ffffffff 3fffa494 3fff565c </p><p>3fff4130: 00000040 3fff565c 3fff9b0c 40231745 </p><p>3fff4140: 3fff964c 3fff565c 3fff9b0c 4023213d </p><p>3fff4150: 3fff5bdc 87274380 2cd2bef0 00000001 </p><p>3fff4160: 3fff565c 3fff9af4 3fff9b0c 00000001 </p><p>3fff4170: 00000010 3fff565c 0000000f 402323b1 </p><p>3fff4180: 3fff6f2c 3fff5d14 0000000f 00000001 </p><p>3fff4190: 00000001 3fff5d5c 3fff7085 40231214 </p><p>3fff41a0: 00000100 3fff5bac 3fff700f 00000000 </p><p>3fff41b0: 00000100 3fff5bac 3fff700f 4023343d </p><p>3fff41c0: 3fff41f0 00000000 000000d0 00000030 </p><p>3fff41d0: 711d2b0c 771b0000 3fff695c 00000004 </p><p>3fff41e0: 00000004 3fff6d0c 3fff7009 4022f548 </p><p>3fff41f0: aa600203 4c40b2d9 f163236d 2d93e7e0 </p><p>3fff4200: 3eb6f722 766bf20f a7c8ab3d 68bddfba </p><p>3fff4210: 78cb410d 15bf8e5c 351a0a10 2b0cb689 </p><p>3fff4220: 00000004 3fff7009 3fff6d0c 4022f949 </p><p>3fff4230: 00000000 600011f0 3fff695c 3fff6c6c </p><p>3fff4240: 00000000 00000004 00000004 4020bbf3 </p><p>3fff4250: 3fff700d 3fff7009 3fff6ddc 00000b80 </p><p>3fff4260: 00000c09 3fff7bf0 00000021 00000004 </p><p>3fff4270: 3fff6d0c 3fff7009 00000004 00000004 </p><p>3fff4280: 00000004 3fff7009 3fff6d0c 4022f340 </p><p>3fff4290: 00000000 3fff7009 3fff6d0c 4022f6e8 </p><p>3fff42a0: 0000000e 3ffea990 0000000f 401004d8 </p><p>3fff42b0: 3fff4300 0000000e 00000010 00000000 </p><p>3fff42c0: 3fff6a2c 3ffea990 3fff6d0c 01000000 </p><p>3fff42d0: 3fff4300 3fff4350 3fff6d0c 4022f498 </p><p>3fff42e0: 4020baa4 00000004 3fff3520 00001387 </p><p>3fff42f0: 0001c7b3 3fff4350 3fff5864 4020c065 </p><p>3fff4300: 000001d1 3fff695c 3fff4350 4020b4ca </p><p>3fff4310: 6ca6e940 00001000 c0034035 3fff28a8 </p><p>3fff4320: 000001d1 3fff4350 3ffea990 4020c275 </p><p>3fff4330: 3ffead30 6ca6e940 3ffead30 6ca6e940 </p><p>3fff4340: 3fff28b4 3fff32e8 3fff57d4 40211508 </p><p>3fff4350: 3ffea438 00000000 000003e8 4010020c </p><p>3fff4360: 3fff2970 3fff6c6c 3fff5864 4010068c </p><p>3fff4370: 3fff32ec 00000010 3fff43d0 40212010 </p><p>3fff4380: 0000000b 00000010 3fff43d0 40211918 </p><p>3fff4390: 00000000 00000000 00000000 402120ed </p><p>3fff43a0: 3fff28b4 3fff443c 3fff43e8 3fff43d0 </p><p>3fff43b0: 3fff28b4 3fff32e8 3fff43d0 3fff57d4 </p><p>3fff43c0: 3fff28b4 3fff32e8 00000001 40206deb </p><p>3fff43d0: 3fff6934 0000001f 00000010 3fff584c </p><p>3fff43e0: 0000000f 0000000b 3fff68fc 0000002f </p><p>3fff43f0: 00000020 3fff57f4 0000001f 00000017 </p><p>3fff4400: 00000000 00000000 00000000 00000000 </p><p>3fff4410: 00000000 00000000 00000000 00000000 </p><p>3fff4420: 00000000 00000000 00000000 00000000 </p><p>3fff4430: 3fff5824 0000001f 0000001e 3fffab0c </p><p>3fff4440: 00000a3f 00000a3f 00000000 11020000 </p><p>3fff4450: 00000000 3fff57d4 00000000 30303231 </p><p>3fff4460: 0003c03b 00000000 00000000 3fff2940 </p><p>3fff4470: 3fff2840 3fff195c 3fff18a8 40208956 </p><p>3fff4480: 00000000 00000000 00000000 00000000 </p><p>3fff4490: 00000000 00000000 00000000 00000000 </p><p>3fff44a0: 00000000 00000000 00000000 00000000 </p><p>3fff44b0: 00000000 00000000 00000000 00000000 </p><p>3fff44c0: 00000000 00000000 00000000 00000000 </p><p>3fff44d0: 00000000 00000000 00000000 00000000 </p><p>3fff44e0: 00000000 00000000 00000000 3fff587c </p><p>3fff44f0: 0000000f 00000000 feefeffe feefeffe </p><p>3fff4500: 3ffea37e 3fff44bc feefeffe feefeffe </p><p>3fff4510: 00000000 00000000 00000001 3fff3514 </p><p>3fff4520: 3fffdad0 00000000 3fff350d 40212dac </p><p>3fff4530: feefeffe feefeffe 3fff3520 40100718 </p><p>&lt;&lt;&lt;stack&lt;&lt;&lt;</p><p>L(C&Atilde;&uuml;Z@ ŠW&thorn;&yuml;</p>
<p>Sorry, I can not help with debugging.</p>
<p>Hello congratulations! Your code works fine!<br><br>The Arduino IDE that shows Gsender.h very good guide!<br><br>I would like to write my email login and password in plain text.<br>For this work do I need to use a base64 library?<br><br>I found this library:<br><a href="https://github.com/adamvr/arduino-base64." rel="nofollow">https://github.com/adamvr/arduino-base64.</a></p><p>The library returns:</p><p>smtp.gmail.com = c210cC5nbWFpbC5jb20A</p><p>The <a href="https://www.base64encode.org/" rel="nofollow">https://www.base64encode.org/ </a> returns:</p><p>smtp.gmail.com = c210cC5nbWFpbC5jb20=</p><p>I found a bug on library?</p><p>How can I leave the variable similar to the ssid variable?</p><p>I saw that EMAILBASE64_LOGIN and EMAILBASE64_PASSWORD are private in to Gsender class. Sorry, I do not know about C++ statements.</p><p>Can I move it to main code?</p><p>Can you help me? Please?</p>
<p>Hi! You want to modify EMAILBASE64_LOGIN and EMAILBASE64_PASSWORD or just be able to read them in main file? Sorry I not sure what you ask about ssid. </p>
Hi,<br><br>Sorry,<br><br>First I would like to enter data for variables only in the main code, the original code is done in the Gsender.h file, I would like to enter email and password in the main code (*.ino).<br><br>Secondly, we need to convert the text email and password to base64 code, and I did not find a good library to do this, I found a library that results in a different base64 code.<br><br>The idea is to use a serial connection to enter the login text a@b.com and the password.<br><br>For the serial connection I already have an example.<br><br>Thank you!
<p>Awesome tute Borya. Simple, easy to integrate and get running. I bolted the email code onto my existing Plant monitoring system and everything was up and running in a few minutes. Thanks a heap!!!!! Good job Borya. </p>
<p>I can only echo the other feedbacks - A very well constructed instructable. I have integrated this into my own automation application with data channels to Thingspeak and Twitter and it all fits together nicely. Thanks &amp; well done. Next step a SMS output element</p>
<p>Hi<br>Thsi gMail sender is brilliant. It works well for me for smaller emails.<br><br>However I now send a 2,7kB size massage and it crashes with Exception(29)<br><br>Anyone knows what cancause this?</p><p>I have around 22kB RAM freeheap </p>
<p>Awesome instructable and it worked on the first try. Thank you very much as I have been trying to get that working for awhile. </p>
<p>Hi,</p><p>Great instructable on email sender using only an ESP8266.</p><p>I made it.</p><p>Would love to have a instructable of new email notifier using ESP8266.</p><p>Keep posting Instructables.</p><p>Thanks.</p>
how could i change this code in order to send an email when a digital pin goes high?

About This Instructable




More by Borya:ESP8266 GMail sender 
Add instructable to: