Vevida e-mail versturen vanuit ASP.NET

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 het onderstaande MailKit 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#:


System.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. 


Belangrijke, 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.

E-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. Inst
Q
Quinten is the author of this solution article.

Was dit antwoord nuttig? Ja Nee

Feedback versturen
Het spijt ons dat we u niet hebben kunnen helpen. Als u feedback geeft, kunnen we het artikel verbeteren.