Library tutorials & articles

Custom SMTP in C#

Introduction

This series of articles is written to show the user how to write TCP/ IP based client applications using C# on Microsoft's new .NET framework. This is the first article in this series.

The first killer applications on the Internet were email and netnews. Email on the Internet was developed using two simple Internet protocols, SMTP and POP3. The first two articles in this series, I'll present to you two classes for implementing SMTP and POP3 clients. In the third article in this series, I'll present to you one class for implementing a NNTP client. The SMTP or Simple Mail Transfer Protocol is described in RFC 821. This application protocols is used to send email over the Internet.

The .NET framework already contains an SMTP class in the System.Web.Mail namespace called SmtpMail. This class is sufficient for sending email over the Internet and I would not suggest that the class I'm presenting in this article is any better or worse. Let's just say that it is different. If you can get away with using the .NET SmtpMail class, then I suggest you do just that. The only advantage of my class is that it is open source and let me suggest that the SmtpMail class in .NET has a few more features. My motivation in writing this article is not to try and write a better SMTP class, but rather to show how to write TCP/ IP based clients in C#.

Comments

  1. 10 Nov 2005 at 15:51
  2. 10 Nov 2005 at 15:50

    Try using this library:
    http://www.lesnikowski.com/mail


    It's simple and effective.
    Allows sending, receiving and parsing email messages.
    Encodes/decodes any kind of attachment.
    Includes POP3 and STMP clients.
    Written entirely in managed code in C#.

  3. 01 Sep 2004 at 14:55
    well... TO is used for the main person you're sending to.

    CC (and BCC, but the B stands for "Blind" so it's not marked as a copy) are traditionally used to send
    it to others that need to see the letter as well without making any changes to it.

    With SMTP, I think you just use another RCPT TO and perhaps add a CC: blah
    and in the data section of the email...
  4. 01 Sep 2004 at 14:11
    I want to ask the same question as well.
  5. 14 May 2004 at 05:46
    Yes, but what if you want to code a filter application? Then you need to RECEIVE SMTP BEFORE sending it to SMTP and then POP3 servers.

    So to RECEIVE SMTP or INTERCEPT SMTP packets, does one need to write a local mail server?
  6. 10 Apr 2004 at 08:25

    Looking at the code, I don't see any differentiation between To, CC, and BCC when you are sending them to the Mail server. For that matter, RFC821 doesn't seem to be much help on the matter either.


    How should one identify the three types when doing an SMTP send?

  7. 02 Mar 2004 at 02:06

    In this example, SMTP class inherits tcpclient, is it more suitable to use a udpclient to send and receive e-mail?

  8. 01 Mar 2004 at 14:39

    I searched this site again and found this article


    http://www.developerfusion.com/show/4071/1/


    If I was to strip out all my proprietary code you would end up with this example. Hopefully this will be enough to
    get you started.


    Cheers
    Gord

  9. 27 Feb 2004 at 21:26

    Gordonm,
    thank you so very much for your willingness to share your codes with me. YES, I do want it. A little detail about my program:
    I am trying to built a mail server just like Yahoo or Hotmail, but it's a mini one It's supposed to receive an email then save the sender address, title, message, and date to SQL server 2000 database. I am writing it in C# and ASP.NET.
    Once again, THANK YOU SO MUCH


    Sincerely,
    tinybunny_8

  10. 27 Feb 2004 at 15:10

    I was getting frustrated with not being able to find any examples of this so I wrote my own.


    It is socket based, uses SMTP and seems to work very nicely. If you are interested let me know and perhaps I can post enough of an example to get people going.


    Gord

  11. 27 Feb 2004 at 05:46

    It would appear so at a cursory glance.... I'll email Randy about that....

  12. 27 Feb 2004 at 05:44

    You can't receive email with SMTP - as its only for sending email! You use POP3 instead - see http://www.developerfusion.com/show/4039/

  13. 27 Feb 2004 at 02:52

    I agree with gordonm, if you know how to receive email using SMTP and C#... would you please write one or show me where to start? I am working on project and need a clue so badly. Thanks


    tinybunny_8

  14. 10 Feb 2004 at 18:00

    I would love to see an example of using Sockets to receive email. Could you please do an article covering that area.


    TIA
    Gord

  15. 09 Feb 2004 at 04:41

    You saved my day with this excellent example, thx Randy

  16. 06 Nov 2003 at 14:18

    In your Write() method, you declare a byte array of size 1024.  Is that the maximum string length that you can send to the Write() method at once?

  17. 01 Jan 1999 at 00:00

    This thread is for discussions of Custom SMTP in C#.

Leave a comment

Sign in or Join us (it's free).

Randy Charles Morin Randy's article are Copyright 1998-2003 Randy Charles Morin

Related discussion

Related podcasts

We'd love to hear what you think! Submit ideas or give us feedback