Sensors and Email, Is this possible?

Hi All,

I have been thinking about purchasing a Arduino and a Ethernet Shield, but before I spend some money, I thought that id ask on this forum if its feasable first, so I decided to post in the project Guidance section, hopefully this is the right section and that the kind people on here could shed some light on this.

I have a container that has a high and low water levels, approx 700 litres, is it possible with an Arduino to monitor these levels?

My plan would be when this container goes low a float sensor would tell the Arduino to then send an E-mail via the Ethernet Shield to say water is low, the same would be for the high levels, but this time say the water is getting high.

Does anyone know if this would be possible?

Many thanks to all who replys and helps.

You can definitely monitor the levels.

As for sending an email here is an article that says it can be done - I cannot vouch for the article i just googled it.

Event (receiving an “e” via the serial monitor) based email sending test code. Uses your ISP’s email server.

//zoomkat 4/08/12
//email test code using DNS
//developed from code posted by various persons

#include <SPI.h>
#include <Ethernet.h>

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
char serverName[] = ""; // your ISP's SMTP server
EthernetClient client;


void setup(){
  Serial.println("DNS and DHCP-based email test 4/08/12"); // so I can keep track of what is loaded
  Serial.println("Send an e in serial monitor to test"); // what to do to test
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
  // print your local IP address:
  Serial.print("Arduino IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);

void loop()
  byte inChar;
  inChar =;
  if(inChar == 'e')
    if(sendEmail()) Serial.println("Email sent"); //start sendEmail()
    else Serial.println("Email failed");

//////////////////////////////// email function
byte sendEmail()  //sendEmail() function that returns 1 or 0
  //start and check for email server connection
  if (client.connect(serverName, 25)) { 
  else {
    Serial.println("connection failed");
    return 0; //send 0 (failed) back to sendEmail() function
  //wait for server "queing" response
  while(!client.available()) delay(1);

  client.println("HELO itismeletschat"); /*hello (statement after helo is needed but irrelevant)*/

  //wait for server "hello" response
  while(!client.available()) delay(1);

  client.println("MAIL From:"); // identify sender, this should be the same as the smtp server you are using*/

  //wait for server "sender ok" response
  while(!client.available()) delay(1);

  client.println("RCPT To:"); /* identify recipient */

  //wait for server "receipent ok" response
  while(!client.available()) delay(1);


  //wait for server to say "enter your message" response
  while(!client.available()) delay(1);
  //send email message to server
  client.println("To:"); /* identify recipient */
  client.println("Subject: You Have Arduino Mail!!"); /* insert subject */
  client.println("Please let me know it worked!!!"); /* insert body */
  client.println("."); /* end email */

  //wait for server "message accepted" response
  while(!client.available()) delay(1);

  client.println("QUIT"); /* terminate connection */
  //wait for server "goodby" response
  while(!client.available()) delay(1);

  //stop client connection
  return 1; //send 1 (success) back to sendEmail() function