SMTP e-mail versturen met .NET

Vanuit je .NET webapplicatie wil je graag eenvoudig e-mail kunnen versturen. In dit artikel laat ik je twee scripts zien: één (1) voor ASP.NET Framework 4.8 met C# en één voor .NET Core 3.1. Dus als je altijd al hebt willen weten hoe je via SMTP een e-mail stuurt met ASP.NET, lees dan gauw verder! Uiteraard met TLS beveiliging.

ASP.NET Framework 4.8

De volgende C# voorbeeldcode kun je gebruiken om vanuit een ASP.NET 4.8 webapplicatie een e-mail te sturen. Via een SMTP-server, beveiligd met TLS. Hiervoor gebruik je in ASP.NET de System.Net en System.Net.Mail namespaces. Binnen deze namespaces gebruik je de MailMessage class (klasse).

Het voorbeeldscript gebruik ook de class SmtpClient om een SMTP-server te gebruiken, TLS-versleuteling in te schakelen met het .EnableSsl property en de class NetworkCredentials om inloggegevens voor SMTP authenticatie op te geven. We gaan ervan uit dat de SMTP-server authenticatie met een e-mailadres en wachtwoord vereist.

Psst: benieuwd naar hoe je met ASP.NET verbindt naar SQL Server?

Let’s go: sla onderstaande code op als sendmail.aspx, en nadat je het hebt gepubliceerd naar je website kun je dit aanroepen om een test e-mail te sturen.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Net.Mail" %>

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    SendMail();
}

public static void SendMail()
{
    string to = "ontvanger@example.org";
    string from = "verzender@example.org";

    MailMessage MailBericht = new MailMessage(from, to);
    MailBericht.Subject = "ASP.NET test e-mail";
    MailBericht.Body = "Hallo wereld! Dit is de body van mijn bericht.";

    SmtpClient client = new SmtpClient("smtp.example.com");
    client.Credentials = new NetworkCredential("verzender@example.org", "p4ssw0rd");
    client.EnableSsl = true;
    client.Send(MailBericht);
}
</script>

Let op: vervang de logische gegevens zoals ontvanger@example.org, verzender@example.org, p4ssw0rd en smtp.example.com door geldige informatie. Merk ook op dat SmtpClient als overbodig (obsolete) is aangemerkt door Microsoft.

Lees ook:  Volledige website back-up maken met Cobian Backup

Een nieuwe library om vanuit (ASP).NET e-mail te versturen is MailKit. Je kunt MailKit zien als de opvolger van de hierboven gebruikte SmtpClient. Hierom heeft deze library de voorkeur om te gebruiken om vanuit .NET Core een e-mail te sturen. Als je wilt kun je MailKit ook gebruiken als vervanging voor SmtpClient in een reguliere ASP.NET webapplicatie.

.NET Core 3.1

Om met .NET Core 3.1 een e-mail te sturen moet je gebruik maken van de hierboven genoemde MailKit library. Hieronder een stappenplan en stukje voorbeeldcode.

  • In Visual Studio maak je een nieuw project: ASP.NET Core Web Application
  • noem deze bijvoorbeeld SendMail
  • Maak een nieuw leeg project template aan: Empty
  • Installeer MailKit via de Package Manager Console:
Install-Package MailKit -Version 2.7.0
  • Omdat dit toch maar een voorbeeld is, vervang de inhoud van Program.cs met de volgende C#-code:
using System;

using MailKit.Net.Smtp;
using MailKit;
using MimeKit;

namespace TestClient
{
	class Program
	{
		public static void Main(string[] args)
		{
			var message = new MimeMessage();
			message.From.Add(new MailboxAddress("Jan Reilink", "sender@example.com"));
			message.To.Add(new MailboxAddress("Recipient Name", "recipient@example.net"));
			message.Subject = "Test SMTP mail from .NET Core 3.1";

			message.Body = new TextPart("plain")
			{
				Text = @"This is my
					multi-line
					email body
					
					Grtz,
					Jan"
			};

			using SmtpClient client = new SmtpClient();
			{
				client.Connect("smtp.example.com", 587, false);

				// Note: only needed if the SMTP server requires authentication
				client.Authenticate("login name", "password");

				client.Send(message);
				client.Disconnect(true);
			}
		}
	}
}
  • Build, Publish en that’s it! Let wel, als je de URL aanroept waarnaar je je DLL hebt gepubliceerd, dan geeft dat een HTTP Error 500.30 – ANCM Start Failure:

Dit komt omdat het niets anders doet dan een e-mail sturen met .NET Core. Daarom is dit een voorbeeld :-) Maar je zal daadwerkelijk wel een e-mail ontvangen hebben en dus kun je de code verwerken in je eigen .NET Core 3.1 webapplicatie.

Lees ook:  SqlCe-database omzetten naar SQL Server

Heeft dit bericht jou geholpen bij het oplossen van een probleem? Of vond je het interessant? Steun dan ITFAQ.nl met een rechtstreekse donatie via Paypal of via IBAN: NL31 ABNA 0432217258 (t.n.v Jan Reilink). Slechts €5,- is al ruim voldoende, bedankt!

Steun ITFAQ.NL


139 x bekeken

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *