title: I got an error 530 5.7.0 from gmail server while trying to send an email from Arduino and Ethernet shield
body: <p>I got an error 530 5.7.0 from gmail server while trying to send an email from Arduino and Ethernet shield.</p>
  
  <p>I want to send an e-mail from my arduino uno board.
  I bought an Ethernet shield for it.
  I found a code to send an e-mail using Ethernet shield below but I failed.
  Gmail server said "530 5.7.0" error code but I don't know what it means.
  What did I wrong?</p>
  
  <pre><code>/*
     Email client sketch for IDE v1.0.1 and w5100/w5200
     Posted December 2012 by SurferTim
  */
  
  #include &lt;SPI.h&gt;
  #include &lt;Ethernet.h&gt;
  
  // this must be unique
  byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };  
  // change network settings to yours
  IPAddress ip( 10, 6, 0, 248 );    
  IPAddress gateway( 10, 6, 0, 1 );
  IPAddress subnet( 255, 255, 255, 0 );
  
  // change server to your email server ip or domain
  // IPAddress server( 1, 2, 3, 4 );
  char server[] = "smtp.gmail.com";
  
  EthernetClient client;
  
  void setup()
  {
    Serial.begin(9600);
    pinMode(4,OUTPUT);
    digitalWrite(4,HIGH);
    Ethernet.begin(mac, ip, gateway, gateway, subnet);
    delay(2000);
    Serial.println(F("Ready. Press 'e' to send."));
  }
  
  void loop()
  {
    byte inChar;
  
    inChar = Serial.read();
  
    if(inChar == 'e')
    {
        if(sendEmail()) Serial.println(F("Email sent"));
        else Serial.println(F("Email failed"));
    }
  }
  
  byte sendEmail()
  {
    byte thisByte = 0;
    byte respCode;
  
    if(client.connect(server,25) == 1) {
      Serial.println(F("connected"));
    } else {
      Serial.println(F("connection failed"));
      return 0;
    }
  
    if(!eRcv()) return 0;
    Serial.println(F("Sending helo"));
  
  // change to your public ip
    client.println(F("helo 1.2.3.4"));
  
    if(!eRcv()) return 0;
    Serial.println(F("Sending From"));
  
  // change to your email address (sender)
    client.println(F("MAIL From: &lt;me@mydomain.com&gt;"));
  
    if(!eRcv()) return 0;
  
  // change to recipient address
    Serial.println(F("Sending To"));
    client.println(F("RCPT To: &lt;receiver@gmail.com&gt;"));
  
    if(!eRcv()) return 0;
  
    Serial.println(F("Sending DATA"));
    client.println(F("DATA"));
  
    if(!eRcv()) return 0;
  
    Serial.println(F("Sending email"));
  
  // change to recipient address
    client.println(F("To: You &lt;receiver@gmail.com&gt;"));
  
  // change to your address
    client.println(F("From: Me &lt;me@mydomain.com&gt;"));
  
    client.println(F("Subject: Arduino email test\r\n"));
  
    client.println(F("This is from my Arduino!"));
  
    client.println(F("."));
  
    if(!eRcv()) return 0;
  
    Serial.println(F("Sending QUIT"));
    client.println(F("QUIT"));
  
    if(!eRcv()) return 0;
  
    client.stop();
  
    Serial.println(F("disconnected"));
  
    return 1;
  }
  
  byte eRcv()
  {
    byte respCode;
    byte thisByte;
    int loopCount = 0;
  
    while(!client.available()) {
      delay(1);
      loopCount++;
  
      // if nothing received for 10 seconds, timeout
      if(loopCount &gt; 10000) {
        client.stop();
        Serial.println(F("\r\nTimeout"));
        return 0;
      }
    }
  
    respCode = client.peek();
  
    while(client.available())
    {  
      thisByte = client.read();    
      Serial.write(thisByte);
    }
  
    if(respCode &gt;= '4')
    {
      efail();
      return 0;  
    }
  
    return 1;
  }
  
  
  void efail()
  {
    byte thisByte = 0;
    int loopCount = 0;
  
    client.println(F("QUIT"));
  
    while(!client.available()) {
      delay(1);
      loopCount++;
  
      // if nothing received for 10 seconds, timeout
      if(loopCount &gt; 10000) {
        client.stop();
        Serial.println(F("\r\nTimeout"));
        return;
      }
    }
  
    while(client.available())
    {  
      thisByte = client.read();    
      Serial.write(thisByte);
    }
  
    client.stop();
  
    Serial.println(F("disconnected"));
  }
  </code></pre>