4
votes

I have a situation. I want to connect to gmail smtp server and send Email from my gmail account. as gmail smtp server uses PLAIN authentication and TLS. I connect to gmail smtp server. and server response is as follow.

220 mx.google.com ESMTP n21sm810716wed.43

then I send it "AUTH PLAIN" and send "EHLO" command. The server responses are as follow:

503 5.5.1 EHLO/HELO first. n21sm810716wed.43

I then sent it "EHLO" command again and response is:

250-mx.google.com at your service, [203.99.179.10]

after this whatever I give it. It prints a sequence of line and Exit. The sequence of responses which it gives are;

250-SIZE 35882577

250-8BITMIME

250-STARTTLS

250 ENHANCEDSTATUSCODES

what should I give it so that it let me login and send me Email? Any help or suggestion will be appreciated. Thanks

See also

Using SMTP, Gmail, and STARTTLS

3
You tagged your question with "c", but there are no references to C code. Are you writing a C program to connect to a SMTP server? Are you using any library?Danilo Piazzalunga

3 Answers

4
votes

You are facing 3 problems:

First, you are not reading entire response of EHLO command.

This command has multi-line response:

250-mx.google.com at your service, [203.99.179.10] 
250-SIZE 35882577 
250-8BITMIME 
250-STARTTLS 
250 ENHANCEDSTATUSCODES

Note the space after last 250 code - it means that this is the last response line.

Second: EHLO should be the first command you send.

Third: Gmail does not allow to log-in without using SSL, either implicit (on 465 port) or explicit (STARTTLS command)

2
votes

We can not use STARTTLS unless we have a secure connection with the server. simple SMTP library and telnet do not support STARTTLS. For this I had to use GNUTLS which performs handshaking with the server and exchange certificate to establish a secure connection. After that I send STARTTLS and it works fine. Hope this helps other facing similar problem. Thanks

0
votes

You should issue the STARTTLS command after the given response. Here is an SMTP conversation example, obtained with netcat on smtp.gmail.com on port 587:

220 mx.google.com ESMTP z83sm46627weq.20
EHLO localhost
250-mx.google.com at your service, [109.114.60.32]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
STARTTLS
220 2.0.0 Ready to start TLS