Friday, October 29, 2010

Sending an email using gmail smtp server from telnet (using stunnel) in windows.

This article explains how to send an email from gmail smtp server using telnet and stunnel on a windows operating system.

Sometimes you may want to test how an email is sent in telnet, maybe in order to create a program that will send and receive emails.

For example, developers who use J2ME to write mobile applications know that there is no existent library or API that allow you to send or receive an email through smtp servers that requires authentication and SSL, and in order to implement such an application, the developer must use SecureSocket and Inputsteam and Outputstream and must know how the smtp server (or pop3 in case of receiving an email) works and how is it gonna respond to commands.

By default, Telnet doesn't support secure connections or SSL, for that we're gonna have to redirect (tunnel) the telnet commands to the stunnel to encrypt them and send them to the gmail smtp server.

First, we're gonna need stunnel which can be downloaded from

After downloading and installing stunnel, we have to configure the stunnel.conf file located in stunnel directory.

in the stunnel.conf, every line that start with a semicolon is a comment,
Make sure to uncomment  client = yes
and edit(or create) the smtps part as following:
accept  = 2301
connect =

- smtps is for secure smtp servers, (Note: If [smtps] doesn't work, try to use [ssmtp] instead)
- Accept indicates the port that you want to use for tunneling,
- Connect indicates the server we're connecting to, in our case, its the gmail smtp server, with port 465.
- Port 465 is the port for smtps, while port 587 is for TLS/STARTTLS.

the stunnel.conf file should now look like the following:
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

client = yes

accept  = 2301
connect =

Save the stunnel.conf file and in stunnel program click on configuration=>Reload.

Now it's time to send the email.

In windows, go to start=>run=>cmd
Once the command line is opened write the following: telnet localhost 2301

you should see the following:
220 ESMTP f14sm1400408wbe.2

we send a hello message:
helo google
250 at your service
ehlo google at your service, []
250-SIZE 35651584

Then the authentication request:
334 VXNlcm5hbWU6

Now we have to authenticate by using our gmail address and password.
However since this is an encrypted session, we're gonna have to send the email and password encrypted in base64. To encrypt your email and password, you can use a program or an online website to encrypt it (search on google for: base64 online encryption).
For example the sentence "my email address" in base64 will become: bXkgZW1haWwgYWRkcmVzcw==
and the word "password" will become: cGFzc3dvcmQ=

Now you should have your email address and password encrypted in base64, go back to the command line and write your base64 email first, (I will use "my email address" as my email address and "password" as my password for this example):
334 UGFzc3dvcmQ6

Enter your password:
235 2.7.0 Accepted

Enter your email:
250 2.1.0 OK x23sm1104292weq.10

Enter the recipient email (I'll email myself for testing):
250 2.1.5 OK x23sm1104292weq.10
Now comes the message part:
354  Go ahead x23sm1104292weq.10
From: Etienne <>
To: Meeeeeeee <>
Subject: Testing email from telnet
This is the body

Adding more lines to the body message.
Finish the DATA with a dot:
250 2.0.0 OK 1288307376 x23sm1104292weq.10

And quit:

221 2.0.0 closing connection x23sm1104292weq.10
Connection to host lost.

The email should now be sent and you can find it in your "sent mail" in your gmail.

Using Telnet with stunnel is very easy, I will try and show how to receive an email with pop3 using telnet, and how to send an email using TLS in my future posts.

Hope you enjoyed this one :)

Hello World!

Hello and welcome to my blog!

This blog is mainly about new Technologies, developing, programing and basically anything computer related.

I hope you enjoy it and learn new stuff while reading :)