Je kunt vanuit jouw ASP.NET– en ASP.NET Core-webapplicatie een e-mail versturen, bijvoorbeeld d.m.v een contactformulier. Dit kan alleen als je een met TLS-beveiligde SMTP-verbinding gebruikt, en in dit artikel laten we je zien hoe je dit doet.

Let op: SmtpClient is verouderd verklaard door Microsoft. Gebruik nu MailKit, zie dit voorbeeld voor een update.

Om vanuit ASP.NET een e-mail te versturen via onze mailservers moet je de SmtpClient.EnableSsl property instellen als true. Ook moet je een nieuwe instantie van de NetworkCredential class opgeven als SmtpClient.Credentials property in je .NET-webapplicatie.

Zie het volgende voorbeeld in C#:

Link naar deze kopSystem.Net.Mail en SmtpClient voorbeeld C# mailscript

<%@ 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 = "info@domein.nl";
    string from = "info@domein.nl";
    MailMessage Netmail = new MailMessage(from, to);
    Netmail.Subject = "Testbericht via TLS-beveiligde verbinding";
    Netmail.Body = @"Hallo wereld!";
    SmtpClient client = new SmtpClient("smtp.vevida.com");

    client.Credentials = new NetworkCredential("info@domein.nl", "wachtwoord");
    client.EnableSsl = true;
    client.Send(message);
}
</script>

In dit voorbeeld moet je jouw e-mailaccount inloggegevens opgeven in de client.Credentials regel. Vervang “info@domein.nl” door jouw e-mailaccount en geef het bijbehorende “wachtwoord” op.

Link naar deze kopBelangrijke, aangepaste, headers toevoegen

Als je het bovenstaande voorbeeld gebruikt, dan zul je waarschijnlijk merken dat System.Net.Mail een belangrijke header vergeet: het Message-ID. Je kunt deze Message-ID header, en anderen, eenvoudig toevoegen in bovenstaande C#-code.

Voeg de volgende regel toe boven de regel met Netmail.Subject = :

Netmail.Headers.Add( "Message-Id", "<" + Guid.NewGuid().ToString() + "@example.com>" );

Als tweede kun je ook zo ook eenvoudig het unieke website-id als header meesturen, oftewel het instance-id:

NameValueCollection NVCSrvElements = Request.ServerVariables;
string[] InstanceID = NVCSrvElements.GetValues("INSTANCE_ID");
NetMail.Headers.Add("X-Instance-ID", Convert.ToString(InstanceID[0]));

Hiermee kun je bijhouden welke website een mail gestuurd heeft.

Link naar deze kopE-mail versturen met ASP.NET MailKit library voorbeeld C# mailscript

Zoals hierboven gemeld, het gebruik van de SmtpClient class wordt afgeraden. Deze class is verouderd verklaard door Microsoft, zij adviseren nu het gebruik van de open source library MailKit. Je kunt MailKit gebruiken voor het versturen van SMTP mail met ASP.NET en ASP.NET Core.

Hier een kort voorbeeldscript dat je kunt verwerken in een ASP.NET Core Web Application.

  1. in je Visual Studio webapplicatie-project moet je MailKit installeren via de Package Manager Console (NuGet):
Install-Package MailKit -Version 2.7.0

Merk op dat het versienummer een voorbeeld is. Zie https://www.nuget.org/packages/MailKit/ voor actuele versie informatie.

  1. Neem referenties op naar de verschillende MailKit objecten:
using System;
using MailKit.Net.Smtp;
using MailKit;
using MimeKit;
  1. Gebruik de volgende C# code als voorbeeld, in hetzelfde .cs-bestand als waarin je de objectreferenties hebt opgenomen:
namespace TestClient
{
	class Program
	{
		public static void Main(string[] args)
		{
			var message = new MimeMessage();
			message.From.Add(new MailboxAddress("Vevida", "vevida@example.com"));
			message.To.Add(new MailboxAddress("Ontvangers Naam", "ontvanger@example.net"));
			message.Subject = "SMTP e-mail vanuit een ASP.NET Core 3.1 webapplicatie";

			message.Body = new TextPart("plain")
			{
				Text = @"Hallo,

					Dit is een multi-line bericht.

					Met vriendelijke groet,
					
					Vevida
					Windows .NET Hosting"
			};

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

				// Note: only needed if the SMTP server requires authentication
				client.Authenticate("inlognaam", "wachtwoord");

				client.Send(message);
				client.Disconnect(true);
			}
		}
	}
}

Vervang test-gegevens door jouw eigen informatie, en let vooral op client.Authenticate("inlognaam", "wachtwoord"); om te authenticeren op de SMTP-server met je e-mailadres en wachtwoord.

Link naar deze kopE-mail versturen via andere scripttalen (PHP, ASP)

Zie ook onze andere artikelen in deze reeks:

Je kunt deze deze informatie en voorbeelden gebruiken om veilig e-mail te versturen vanaf jouw website.

Wat vind jij van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.