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

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>

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.

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

Om met .NET 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.

Show 2 Comments

2 Comments

  1. Easily send your DevOps reporting by email with this PowerShell function, because the Send-MailMessage cmdlet is obsolete. Of course you’ll be using StartTLS and authenticated…

  2. If you want to send email securely from your website, this post is for you! In this post I’ll provide some script examples for ASP,…

Geef een reactie

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