Jean-Paul Passama wrote:
Know that, but you don't explain how to indicate a CC: receiver.

OK, it's time for another crash course in the SMTP transport.

The "TO", "CC", and "BCC"--and for that matter, all headers--are just informational for the Mail Client. As far as the SMTP protocol knows, the message payload is composed of a very large string which includes the headers, body, attachments, and all other mime parts. The receiving client application makes a distinction between the body and the headers and the various parts, but for the transport doesn't know nor cares.

Now, there is an "envelope" tied to each SMTP message, which indicates to the server the actual sender and the recipients. These are sent as part of the "MAIL FROM" and "RCPT TO" commands, respectively, prior to the message data. In the case of the sender, only one is allowed, and the server will use that to compose routing information in case the message needs to be bounced. Some servers also use it to verify relay access. On the other hand, the "RCPT TO" command can be sent multiple times, once for each recipient.

Thus, when you send a message via SMTP, your application prepares a list of all the recipients--ALL OF THEM--including the "TO", "CC" and "BCC" recipients. This list is sent to the SMTP server, one by one, using the "RCPT TO" command.

So what are the headers for, then? Like I said, for the receiving mail client to see, nothing more (there are some exceptions, but they do not apply to this explanation). The "primary" recipient customarily is put in the "TO" header, additional recipients are put in the "CC" header, and the "BCC" is not even included (the idea is that the other recipients never sees them!).

And how does this work with ICS TSmtpClient? The first thing you must understand is that the component encapsulates the SMTP protocol--the transport--not a Mail Client; that is the job of your application. That means that your application needs to take care of all recipients and headers itself.

Your application can keep its own list of "TO", "CC", and "BCC", and then set the HdrTo and HdrCC fields in the TSmtpClient component so that they show up in the e-mail headers (you do not include the "BCC" in the headers, of course!), but it must also add them to the actual recipient list by calling RcptNames.Add() for each one.

For more information on how to do this, as Arno said before, check out the OverbyteIcsMailSnd demo program.

I hope this explains how it works.


To unsubscribe or change your settings for TWSocket mailing list
please goto
Visit our website at

Reply via email to