• 0

[C# .Net 2] How do I send emails from my C# code?


Question

Ive written a web app in ASP.NET, C#, .NET 2.0 with a SQL Server 2000 db. Ive got this installed on a Windows Server 2003 box.

Ive never setup or sent email from .Net before. Could someone advise how i set it up on the Windows 2003 box, whether i need to setup anything in .Net framework configs and what namespaces and methods i need to use in C# to get this working.

Thanks!

15 answers to this question

Recommended Posts

  • 0

there are a number of ways you could do this..

however when i do it.. i use a class called mailmessage

which i think off the top of my head is system.web.mail

ill check

so, create a new object of mailmessage and then assign a to address and from address etc

  • 0

MailMessage mmEnquiry = new MailMessage();

SmtpClient smtpClient = new SmtpClient();

MailAddress fromAddress = new MailAddress(ConfigurationManager.AppSettings["SUPPORT_EMAIL"],

ConfigurationManager.AppSettings["SITE_NAME"]);

mmEnquiry.To.Add(ConfigurationManager.AppSettings["SUPPORT_EMAIL"]);

mmEnquiry.Subject = "Website Error has occurred";

mmEnquiry.From = fromAddress;

mmEnquiry.Body = "Message goes here";

smtpClient.Host = ConfigurationManager.AppSettings["SMTP_IP"];

smtpClient.Send(mmEnquiry);

  • 0
  whoreman said:

MailMessage mmEnquiry = new MailMessage();

SmtpClient smtpClient = new SmtpClient();

MailAddress fromAddress = new MailAddress(ConfigurationManager.AppSettings["SUPPORT_EMAIL"],

ConfigurationManager.AppSettings["SITE_NAME"]);

mmEnquiry.To.Add(ConfigurationManager.AppSettings["SUPPORT_EMAIL"]);

mmEnquiry.Subject = "Website Error has occurred";

mmEnquiry.From = fromAddress;

mmEnquiry.Body = "Message goes here";

smtpClient.Host = ConfigurationManager.AppSettings["SMTP_IP"];

smtpClient.Send(mmEnquiry);

If you can get this to work please PM me. I have tried to make it work with Gmail before to no avail.

Good luck

  • 0

Ok, so the C# code looks straight forward enough... Thanks.

What about setting it up on the server though? I assume i have to install some email server thing in Windows Server 2003 so that it can send email? Any advice on this bit - do i have to install MS Exchange or something?

  • 0

when you create the mail message and send it..

it will sit in the email queue of your IIS server.. (C:\Inetpub\mailroot\Queue) .. check this folder to make sure your code is working right :p

what i do is set that to point to my exchange server which then forwards the mail to its recipient..

but there are 2 options:

a) use a smart host which basically tells the server to send all its mail to another server set up with smtp (in my case exchange box)

b) direct delivery so your smtp server in iis connects to the correct smtp server directly

this may help

http://www.microsoft.com/technet/prodtechn...1.mspx?mfr=true :)

  • 0

on my server i have running the standard smtp server - i dont think i configured it... i think it is part of the add/remove components within the category IIS

With my code i store the IP address and other things in the web config file also note i negated the includes

  • 0
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 25);
MailMessage Message = new MailMessage(From, To);

Message.Subject = Subject;
Message.Body = Msg;

Message.IsBodyHtml = true;

smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential(User, Pass);

smtp.Send(Message);

That's part of my app. You have to enable SSL, and add your credentials to support authentication.

  • 0
  whoreman said:

MailMessage mmEnquiry = new MailMessage();

SmtpClient smtpClient = new SmtpClient();

MailAddress fromAddress = new MailAddress(ConfigurationManager.AppSettings["SUPPORT_EMAIL"],

ConfigurationManager.AppSettings["SITE_NAME"]);

mmEnquiry.To.Add(ConfigurationManager.AppSettings["SUPPORT_EMAIL"]);

mmEnquiry.Subject = "Website Error has occurred";

mmEnquiry.From = fromAddress;

mmEnquiry.Body = "Message goes here";

smtpClient.Host = ConfigurationManager.AppSettings["SMTP_IP"];

smtpClient.Send(mmEnquiry);

Ok going with this approach... the code compiles fine... but im not sure how i determin the host IP for the smtp client object... and im not sure im heading in the right direction... again, ill point out that i have no idea about setting up email :blush:.

What i want is to create a new web site with my own domain name like MyOwnWebSiteName.co.uk and then send emails from support@MyOwnWebSiteName.co.uk. So i assume i would get the smtp host ip from whoever i get the domain name with, that right??? So i owuld be using the domain company's smtp server? Any pointers here will be great...

  • 0

You can send them email as if it came from any address i believe..

dont quote me on that as iv not tried to do it from a domain i didnt own.. only an address that wasnt valid

tell me how you wnat your system to work, and what machines / systems you have at the moment and ill give you my best answer to try and set up the outgoing mail

  • 0
  BGM said:

tell me how you wnat your system to work, and what machines / systems you have at the moment and ill give you my best answer to try and set up the outgoing mail

I want to have an ASP.NET 2 web app where i can enter an email address and press 'send' and it sends a test email to that email address. I want the email to come from the address 'support@MyOwnWebSiteName.co.uk' - so that if they click reply it sends an email to 'support@MyOwnWebSiteName.co.uk'.

This will be hosted on a Win Server 2003 box - using IIS & .NET Framework 2.

As it stands, i havent setup smtp or any other email service on the Win Server 2003 box. Nor have i yet gone and bought the MyOwnWebSiteName.co.uk domain - i could probably do with some advice here too... not sure what kind of service id need to buy to be able to get that email address 'support@MyOwnWebSiteName.co.uk'.

  • 0

Your host just needs to provide an SMTP mail service. If you're using a domain you've registered, and you've set your DNS correctly, your host should reflect your domain name in your sent emails.

You'll receive the smtp server address and pop address when you get a host, provided that your host has an email service, which I've never seen one that didn't. Also, you can run your own smtp server from your local machine to send emails. I've used http://www.postcastserver.com/ in the past for testing purposes. They have a free edition that works quite well.

Once you get your mail server info, what I would do is to add a key/val to your web.config with the smtp server address. Then you simply reference that app setting in your code to get the server info. That's what tony-ipo is doing in his code.

  • 0
  Leo Natan said:

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 25);
MailMessage Message = new MailMessage(From, To);

Message.Subject = Subject;
Message.Body = Msg;

Message.IsBodyHtml = true;

smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential(User, Pass);

smtp.Send(Message);

That's part of my app. You have to enable SSL, and add your credentials to support authentication.

WOOOO nice one

Cheers for that

  • 0
  weenur said:

Your host just needs to provide an SMTP mail service. If you're using a domain you've registered, and you've set your DNS correctly, your host should reflect your domain name in your sent emails.

You'll receive the smtp server address and pop address when you get a host, provided that your host has an email service, which I've never seen one that didn't. Also, you can run your own smtp server from your local machine to send emails. I've used http://www.postcastserver.com/ in the past for testing purposes. They have a free edition that works quite well.

Ok ill make sure my host has a SMTP mail service... seems easiest way to do it.

So Windows Server 2003 doesnt have an SMTP Server app included - you have to use 3rd party software like PostCastServer?

  • 0
  $phinX said:

Ok ill make sure my host has a SMTP mail service... seems easiest way to do it.

So Windows Server 2003 doesnt have an SMTP Server app included - you have to use 3rd party software like PostCastServer?

windows 2003 does have an smtp server, in IIS

however it is an arse to get working as alot of ISPs dont allow random email servers on their network.. (as i found out on the weekend when i tried to set it up properly) the easiest way you can get this to work is by using an external smtp server hosted by a service provider hosting your domain..

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Yes, the Control Pannel issue has been fixed. As I ask when people claim it hasn't, can you name a single thing in Windows 11 that can only be done by opening Control Panel? Your comment about Error 0x80070643 is so asinine that I debated if you were worth a reply, but here I am. The article mentioned a VERY specific issue with the WinRE partition size being too small in Windows 10 and preventing updates from being installed unless you reinstalled or manually fixed it. That issue does not exist on Windows 11, period. To point to random issues with Windows updates on 11 that don't affect everyone and don't involve that issue is being dishonest. Had the article said "Issues with updates, such as..." then I'd agree with you, but it didn't, it simply mentioned that one specific issue, which despite your claim, does not exist on 11 or on newer builds of 10 (so the article is kind of wrong, it did get fixed, just not gracefully). As far as UX/UI comes more down to opinion, but again, you are saying it is "terrible" which has nothing to do with consistency. Windows 11 has a more consistent interface. You are welcome to say it is constantly bad, but I don't see how any objective person can say it isn't more constant than Windows 10's unholy merger of Windows 7 and Windows 8. To be fair, I really like Windows 10's interface, it worked great, but was it consistent, NO, it was one of the least consistent interfaces MS has ever made. I agree with the lack of competition. Linux continues to get better
    • Microsoft isn't happy you're using unsupported Exchange versions, announces final deadline by Usama Jawad Earlier this month, Microsoft announced Exchange Server Subscription Edition (SE), which is the official transition of the product to the Modern Lifecycle Policy, where software is continuously serviced without an end-of-life date, as long as you keep it updated. It also revealed surprising, but brief, Extended Security Updates (ESUs) for Exchange 2016 and 2019. As it winds down support for these products, the company has expressed some displeasure that some customers are using even older and, obviously, unsupported versions of Exchange. In a blog post, the company has noted that it currently offers migration tools that enable the migration of public folders from on-premise Exchange 2013 or older versions to Exchange Online. This is by design, but Microsoft is now changing its tune on the topic. Starting from October 1, 2025, customers leveraging Exchange 2010 or older versions of the software will not be allowed to use Microsoft's tools to migrate their public folders to Exchange Online. Microsoft believes that this deprecation will reduce reliance on legacy systems and enhance "long-term service reliability". Any migrations that are attempted after the aforementioned date will fail, so Microsoft has urged customers to complete their migrations as soon as possible. If customers want to move their data to Exchange Online after October 1, they will first have to upgrade to a newer Exchange version, which is Exchange 2013, but it is important to keep in mind that supported versions are 2016 and 2019. Microsoft has emphasized in a rather stern tone that it does not encourage using unsupported versions of Exchange Server at all, and it has just put out this advisory because it is aware that public folder migrations from legacy systems are currently active, even though they shouldn't be. Needless to say, customers should upgrade to Exchange Server 2016 or 2019 as quickly as possible, but ideally, they should consider moving to Exchange Server SE at this point, considering that the other two versions are running out of support soon, too.
    • A little bit, yeah, if you ask me. Granted, he has the right to be upset with this jerk user that attacked him, but why drop the entire project just because of ONE person? Seems a little exaggerated.
  • Recent Achievements

    • Week One Done
      NeoWeen earned a badge
      Week One Done
    • One Month Later
      BA the Curmudgeon earned a badge
      One Month Later
    • First Post
      Doreen768 earned a badge
      First Post
    • One Month Later
      James_kobe earned a badge
      One Month Later
    • Week One Done
      James_kobe earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      673
    2. 2
      ATLien_0
      256
    3. 3
      Xenon
      165
    4. 4
      neufuse
      145
    5. 5
      +FloatingFatMan
      115
  • Tell a friend

    Love Neowin? Tell a friend!