Naar inhoud springen

Programmeren in ASP.NET/Mail vanuit ASP.NET

Uit Wikibooks

Programmeren in ASP.NET



WSBN nl-2-04-03-00001

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
← Caching Programmeren in ASP.NET Reguliere expressies →
Informatie afkomstig van Wikibooks NL, een onderdeel van de Wikimedia Foundation.