• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1889
  • Last Modified:

SMTP: RCPT TO: always empty, instead DATA TO: ?

Hey guys,

While programming an application using SMTP, I found this very confusing thing.

Every article, manual, document, you name it, covering SMTP tells me that recipients are added using the RCPT TO: <address@domain.tld> command. However, when I manually send an email using telnet, when I look in my mail root directory (eg. inetpub/mailroot/queue), the email I just sent always lists the 'To:' field as empty, for example when I load the email in Outlook.

After much messing around with it and asking a friend of mine, it seems that the only way to get the 'To:' field to contain addresses, is by setting it in the DATA field. For example:

EHLO
MAIL FROM: me@mydomain.net
RCPT TO: you@yourdomain.net
DATA
Test email
.

If I load this email in Outlook (or edit in a texteditor) it clearly shows that the mail is from me@mydomain.net, with no subject, body 'Test email', but no recipient! However if I do this:

EHLO
MAIL FROM: me@mydomain.net
RCPT TO: you@yourdomain.net
DATA
TO: you@yourotherdomain.net
Test email 2
.

it will show the email to come from me@mydomain.net, no subject, body 'Test email 2' but with recipient you@yourotherdomain.net?!

This confuses me, especially since I can't seem to find an article covering this. Also, what is the point of the RCPT TO: field when somehow it won't accept this for me? Oh and I tried this on 2 different SMTP servers, using remote connections or local connections, so I don't think there can be the problem.

I hope someone can explain this to me! Thanks!

Razzie
0
Razzie_
Asked:
Razzie_
  • 4
  • 2
1 Solution
 
PsiCopCommented:
Simply put:

TO: != RCPT TO:

This took me awhile to figger out to.

RCPT TO: is an SMTP command that tells the MTA (Message Transfer Agent) to whom the E-Mail is destined. This is so it can perform lookups, determine if it accepts mail for this Domain and/or user, determine proper routing, etc. etc.

The TO: line in an E-Mail derives from the headers transmitted with the E-Mail itself. That is, your program must *explicitly* transmit a TO: header, during the DATA step, if you want the resultant E-Mail to have a TO: header. RCPT TO: is strictly for the MTA.

This is how things like BCC: are done. The recipients are listed in the RCPT TO: commands during the initial communication with the MTA, but the TO: header is omitted. TO: is mainly for us humans, (and any programs, like ProcMail, that may handle the E-Mail after the MTA has accepted it for delivery).
0
 
PsiCopCommented:
Whoops. That was my site.Config.m4 I gave you a link to above. Here is my annotated sendmail.mc

http://www.experts-exchange.com/Networking/Email_Groupware/Sendmail/Q_21116293.html
0
 
PsiCopCommented:
Fudge. Wrong Question. Ignore my last Comment.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
Razzie_Author Commented:
Ok thanks PsiCop!
0
 
Razzie_Author Commented:
Btw, it's strange that all articles I read about SMTP do not cover this, I wonder why....
0
 
PsiCopCommented:
I dunno. I'll Ask Mr. Protocol if he can look into it.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now