Programmeren in ASP.NET/Mail vanuit ASP.NET
Uiterlijk
In dit voorbeeld zie je hoe je vanuit ASP.NET mail kan versturen. Je gebruikt hiervoor het MailMessage-object en het SmtpMail-object.
Maak eerst enkele instellingen in web.config:
<system.web> ... </system.web> <system.net> <mailSettings> <smtp from="mijnnaam@mijndomein.com"> <network host="127.0.0.1" password="" userName=""/> </smtp> </mailSettings> </system.net>
Zorg ervoor dat het e-mailadres en de naam van de SMTP-host juist zijn. 127.0.0.1 stemt overeen met localhost (dus de mailserver is dan dezelfde als de webserver), maar dit kan ook een ander IP-adres of domeinnaam (bijvoorbeeld mail.mijndomein.com) zijn.
Bij veel providers kan je alleen mail versturen met een gebruikersnaam en een wachtwoord (authenticated SMTP). Dan voeg je deze toe in de configuratie van de SMTP-host.
Maak nu een pagina:
mail.aspx
<%@ Page Language="VB" %> <%@ import Namespace="System.Net.Mail" %> <script runat="server"> Sub btn_Click(sender as Object, e as System.EventArgs) Try Dim mail As New MailMessage mail.To.Add(tbAan.Value) ' dit kan bijvoorbeeld uit een databank komen mail.Subject = "Boodschap via ASP.NET" mail.Body = "Boodschap - zet hier de ganse boodschap" mail.IsBodyHtml = True Dim client As New SmtpClient() client.Send(mail) lblInfo.Text = "Het bericht is verstuurd" Catch ex As Exception lblInfo.Text="Er ging iets mis.<br>" lblInfo.Text= lblInfo.Text & "Dit was de foutmelding:<br>" & ex.Message ' toon ook de InnerException While Not (ex.InnerException Is Nothing) ex = ex.InnerException lblInfo.Text= lblInfo.Text & "<br>Meer info: " & ex.Message End While End Try End Sub </script> <html> <head> <title>mail</title> </head> <body> <h1 align="center">Mail via ASP.NET</h1> <form runat="server"> Aan:<input id="tbAan" type="text" size="30" runat="server"/> <br> <input id="btnSubmit" type="submit" value="Mail via ASP.NET" name="b1" runat="server" onserverclick="btn_Click" /> <br> <asp:Label id="lblInfo" runat="server" EnableViewState="False" /> </form> </body> </html>
Opmerkingen
- Omdat de foutmelding in 99% van de gevallen "Could Not Access CDO.Message" of "Failure sending mail" is, tonen we hier ook de InnerException-boodschappen, die meestal meer informatie geven.
- Om mail te kunnen sturen moet je een SMTP-server gebruiken waarop je de nodige toegangsrechten hebt. De meeste providers laten dit niet toe, omdat dit gemakkelijk kan misbruikt worden om te spammen.
- Je kan op je eigen pc een SMTP-server installeren als onderdeel van de Internet Information Services. Je moet deze zo instellen dat tenminste ip-adres 127.0.0.1 (de eigen computer) relay access (het recht om mails door te sturen) heeft.
- Om mail te sturen naar meerdere adressen tegelijk (een zogenaamde mailinglijst), voeg je meerdere regels met Mail.To.Add toe.
- Je kan ook mail versturen met bijlagen (attachments).
- Meer informatie over ASP.NET mail: https://www.systemnetmail.com