Decrease Font Size
Increase Font Size
   BLOG

ASP.NET Sending email through Hotmail

ASP .NET How to Send Email asynchronously | ASP .NET sends email using live.com account

I was browsing the ASP.NET forum the other day and saw a topic "Problem sending email" using hotmail account Asynchronously. Personally, I haven't tried that before and I did get it to work. Below is the code in vb.net and CSharp version. Make sure to set Async="true" in the page directive because we are sending the email Asynchronously.

Here is the entry in Web.config

<configuration>
<system.net>
    <mailSettings>
      <smtp from="myEmail@hotmail.com"> 
        <network host="smtp.live.com" defaultCredentials="false"  port="25" userName ="myHotmailEmail@hotmail.com" password="myHotmailPassword" />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

This is the ASPX page

<%@ Page Language="VB" Async="true" AutoEventWireup="false" CodeFile="TestHotmail.aspx.vb" Inherits="TestHotmail" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </div>
    <asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
    </form>
</body>
</html>

VB.NET

Imports System.Net.Mail
Partial Class TestHotmail
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        AddHandler Button1.Click, AddressOf Button1_Click
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim mailMessage As New System.Net.Mail.MailMessage

        mailMessage.To.Add(New MailAddress("toSomeone@gmail.com"))
        mailMessage.From = New MailAddress("fromMe@hotmail.com")

        mailMessage.Subject = "my test subject"
        mailMessage.Body = "my test body"
        mailMessage.IsBodyHtml = True

        Dim smtpClient As New SmtpClient()
        smtpClient.EnableSsl = True

        Dim userState As Object = mailMessage

        AddHandler smtpClient.SendCompleted, AddressOf smtpClient_OnCompleted
        smtpClient.SendAsync(mailMessage, userState)

    End Sub

    Public Sub smtpClient_OnCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        Dim mailMessage As MailMessage

        mailMessage = CType(e.UserState, MailMessage)

        If (e.Cancelled) Then
            lblMessage.Text = "Sending of email message was cancelled. Address=" + mailMessage.To(0).Address
        End If
        If Not (e.Error Is Nothing) Then
            lblMessage.Text = "Error occured, info :" + e.Error.Message
        Else
            lblMessage.Text = "Mail sent successfully"
        End If
    End Sub

End Class

 

If you are using CSharp, this is the code behind

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;

public partial class TestHotmailCsharp : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Click +=new EventHandler(Button1_Click);
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();

        mailMessage.To.Add(new MailAddress("toSomeone@gmail.com"));
        mailMessage.From = new MailAddress("fromMe@hotmail.com");

        mailMessage.Subject = "my test subject";
        mailMessage.Body = "my test body";
        mailMessage.IsBodyHtml = true;

        SmtpClient smtpClient = new SmtpClient();
        smtpClient.EnableSsl = true;

        object userState = mailMessage;

        smtpClient.SendCompleted += new SendCompletedEventHandler(smtpClient_SendCompleted);
        smtpClient.SendAsync(mailMessage, userState);
    }

    void smtpClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
    {
        MailMessage mailMessage = default(MailMessage);

        mailMessage = (MailMessage)e.UserState;

        if ((e.Cancelled))
        {
            lblMessage.Text = "Sending of email message was cancelled. Address=" + mailMessage.To[0].Address;
        }
        if ((e.Error != null))
        {
            lblMessage.Text = "Error occured, info :" + e.Error.Message;
        }
        else
        {
            lblMessage.Text = "Mail sent successfully";
        }
    }
}

 

References:
Send Email Asynchronously with ASP.NET
Incoming and Outgoing Mail Server Settings for Hotmail, Yahoo! Mail, GMail, MSN, AOL and more