使用asp.net发送邮件详解

来源:互联网 发布:act网络课程 编辑:程序博客网 时间:2024/06/05 19:01

王国荣的asp.net对发送邮件进行了一定的讲解但是不过全面。
在这篇文章里, 我们在尽可能广的范围广内讲解使用 ASP.NET发送电子邮件,包括选择电子邮件格式, 优先权, 附件和电子邮件内码。
现在让我们逐步探索使用ASP.NET发送电子邮件。我们将使用VB来说明例子, 但是我们最后的代码包括VB 和C # 。
Step1: 包括命名空间
System.Web.Util 命名空间在ASP.NET 里。这命名空间包含送电子邮件的所有必要对象。
对象是:
对象 总结
SmtpMail 代表邮件系统。发送电子邮件。
MailMessage 消息, 例如发信人地址, 收信人地址等。
MailFormat 格式,邮件的格式- HTML, 文本, 等
MailAttachment 代表电子邮件附件
MailEncoding enum 代表任一个内码譬如Base64 或UUencode 。
MailPriority enum 设置邮件优先权。价值: 高, 低, 正常
<% @Import Namespace = "System.Web.Util" %>
OK第一部已经完成了

步骤2: MailMessage 对象示例
声明MailMessage对象。
Dim mailObj AS new MailMessage
MailMessage 对象属性:

属性 描述
From 发信人的地址
To 收信人的地址
Subject 邮件主题
Body 邮件正文
cc 邮件副本接受人地址
bcc 邮件副本接受人地址比显示在邮件中(密件)
Priority 邮件的优先权
BodyEncoding 邮件内码
BodyFormat 邮件格式,html或文本
Attachments 邮件附件
以下的代码片断将展示MailMessage 对象。
mailObj.From = "abc@mydomain.com"
mailObj.To = Request.Form ("to")
mailObj.Subject = "subject of the mail"
mailObj.Body = "Message of the mail"

发送邮件使用SmtpMail 对象Send 方法。以下代码片断被使用送邮件
SmtpMail.Send(mailObj)

vb.net完整源代码
<%@page language="VB" %>
<%@Import Namespace="System.Web.Util" %>
<HTML>
<head>
<title>欢迎使用chenyangasp示例程序
</title>
</head>
<BODY>
<SCRIPT LANGUAGE="VB" RUNAT="server">
' 这个方法当提交时访问服务器
Sub SendMail (Obj As Object, E As EventArgs)
Dim mailObj AS new MailMessage
'设置邮件的发送及接收地址
mailObj.From = Request.Form("From")
mailObj.To = Request.Form("To")

mailObj.Subject = "Subject Of the Mail"
mailObj.Body = "Body of the Mail"

'html格式的邮件
mailObj.BodyFormat = MailFormat.Html


'设置为高级优先权
mailObj.Priority = MailPriority.High

'为邮件添加附件
'注意:这里我们创建了一个mailattachment对象添加一个附件到邮件中
mailObj.Attachments.Add(new MailAttachment("c:/test.doc"))
'使用SmtpMail对象发送邮件
SmtpMail.Send(mailObj)
End Sub
</SCRIPT>
<asp:label ID="Headingmsg" Text="Enter Your Email Address:" RUNAT="server"/>
<FORM METHOD="post" RUNAT="server">
Email Recipient: <INPUT TYPE="text" NAME="to"> <br>
Email Sender: <INPUT TYPE="text" NAME="from">
<INPUT TYPE="submit" NAME="Submit" VALUE="Send Mail" RUNAT="server" OnServerClick="SendMail">
</FORM>
</BODY>

C#完整源代码
<%@page language="C#" %>
<%@Import Namespace="System.Web.Util" %>
<HTML>
<head>
<title>欢迎使用chenyangasp示例程序
</title>
</head>
<BODY>

<SCRIPT LANGUAGE="C#" RUNAT="server">
// 这个方法当提交时访问服务器
public void SendMail (Object Obj, EventArgs E)
{

MailMessage mailObj = new MailMessage();

// 设置邮件的发送及接收地址
mailObj.From = Request.Form("From");
mailObj.To = Request.Form("To");

mailObj.Subject = "Subject Of the Mail";
mailObj.Body = "Body of the Mail";

// html格式的邮件
mailObj.BodyFormat = MailFormat.Html;


// 设置为高级优先权
mailObj.Priority = MailPriority.High;

// 为邮件添加附件
// 注意:这里我们创建了一个mailattachment对象添加一个附件到邮件中
mailObj.Attachments.Add(new MailAttachment("c://test.doc"));

// 使用SmtpMail对象发送邮件
SmtpMail.Send(mailObj);
}
</SCRIPT>

<asp:label ID="Headingmsg" Text="Enter Your Email Address:" RUNAT="server"/>

<FORM METHOD="post" RUNAT="server">

Email Recipient: <INPUT TYPE="text" NAME="to"> <br>
Email Sender: <INPUT TYPE="text" NAME="from">
<INPUT TYPE="submit" NAME="Submit" VALUE="Send Mail" RUNAT="server" OnServerClick="SendMail">
</FORM>
</BODY>

 

 

 

 

 

 

 

 

 

在.net中,.NET自带了发送邮件的功能,在VS2003中该功能已经封装进.NET Framework的System.Web.Mail的命名空间里了,在VS2005下更多的是利用System.Net.Mail命名空间了。
    使用这个命名空间下的类,就可以很容易的构建一个发送邮件的程序,所需要的仅仅是在windows中架构好SMTP服务器。

    System.Web.Mail命名空间:

    这个命名控件下包含了以下的对象和三个属性:

    包含的对象:

        MailAttachment:与邮件附件有关的对象类
        MailMessage   :邮件主体
        SmtpMail      :负责发送邮件的SMTP协议。
    属性列表:
        MailEncoding  :邮件的编码(Base64,UUEncode) 
        MailFormat    :邮件的格式(Html超文本格式,Text纯文本格式)
        MailPriority  :邮件优先级(High, Medium, Low)

    构建MailMessage对象:

    MailMessage对象是邮件的承载主体,通常可以先构建好MailMessage对象,然后设置它的属性的方式来构建邮件程序,下面列出了的是一些常用的属性:

        Attachments       :邮件附件
        Bcc                   :暗送地址
        Body                :邮件主体
        BodyFormat           :邮件格式(html,text)
        Cc                   :抄送地址
        From               :发信人地址
        Priority             :邮件优先级(High, Medium,Low)
        Subject            :邮件主题
        To                   :接收人地址
        UrlContentBase    :在HTML格式邮件中的URL编码方式
        UrlContentLocation:邮件信息的优先级(High, Medium,Low)

    使用SMTPMail发送邮件

    构建好MailMessage对象之后,还需要使用另外一个对象-SMTPMail-来发送邮件,SMTPMAIL有一个很重要的方法:Send,该方法有两个不同用法,其中一个可以仅仅发送整个的MailMessage对象:

        SmtpMail.Send(myEmailObject);

    另外一个允许你分别指定发送者,收邮件地址,邮件主题,邮件主题,然后再发送出去:

        SmtpMail.Send(strFrom, strTo, strSubject, strBody);

    例子程序:

    来看看下面这一个完整的例子,在这个例子中,使用System.Web.Mail命名空间,我们先创建一个MailMessage对象,然后设置部分属性,最后使用SmtpMail对象把它发送出去:
protected void Page_Load(object sender, EventArgs e)
{
    // CREATE A MAIL MESSAGE
    System.Web.Mail.MailMessage myEmail = new System.Web.Mail.MailMessage();

    // SET MESSAGE PARAMETERS
    myEmail.From = "chenjun@webjx.com";
    myEmail.To = "admin@webjx.com";
    myEmail.Subject = "Product Availability Notice";
    myEmail.BodyFormat = System.Web.Mail.MailFormat.Html;
    myEmail.Body = "The sunglasses you expressed interest in are now in stock.";

    //SEND THE MESSAGE
    System.Web.Mail.SmtpMail.Send(myEmail);

    //UPDATE STATUS
    lblMailStatus.Text = "Mail successfully sent.";
}

<html>
<body>

<asp:Label id="lblMailStatus" runat="server" />

</body>
</html>

    System.Net.Mail命名空间:

    这个命名控件下包含了以下主要对象和主要属性:

    包含的对象:

        MailAddress:表示电子邮件发件人或收件人的地址
        Attachment   :表示电子邮件的附件
        MailAddressCollection   :存储与电子邮件关联的电子邮件地址
        MailMessage   :表示可以使用 SmtpClient 类发送的电子邮件
        SmtpClient     :允许应用程序使用简单邮件传输协议 (SMTP) 来发送电子邮件。

    属性列表:

        DeliveryNotificationOptions:描述电子邮件的传送通知选项
        MailPriority    :指定 MailMessage 的优先级
        SmtpAccess  :指定允许的简单邮件传输协议 (SMTP) 服务器访问级别
        SmtpDeliveryMethod:指定如何发送电子邮件
        SmtpStatusCode:指定使用 SmtpClient 类发送电子邮件的结果

    构建MailMessage对象:

    MailMessage对象是邮件的承载主体,通常可以先构建好MailMessage对象,然后设置它的属性的方式来构建邮件程序,下面列出了的是一些常用的属性:
        Attachments       :邮件附件
        Bcc                   :暗送地址
        Body                :邮件主体
        Cc                   :抄送地址
        From               :发信人地址
        Subject            :邮件主题
        To                   :接收人地址

    使用SmtpClient发送邮件

    构建好MailMessage对象之后,还需要使用另外一个对象-SmtpClient-来发送邮件,SmtpClient有一个很重要的方法:Send,可以发送整个的MailMessage对象:

        SmtpClient.Send(MailMessage);

在这个例子中,使用System.Net.Mail命名空间

        static string strHost = String.Empty;
        static string strAccount = String.Empty;
        static string strPwd = String.Empty;
        static string strFrom = String.Empty;

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="to">接收方邮件地址</param>
        /// <param name="title">邮件标题</param>
        /// <param name="content">邮件正文内容</param>
        public static bool sendmail(string to, string title, string content)
        {
            strHost = "smtp.webjx.com";   //STMP服务器地址
            strAccount = "abc@webjx.com";       //SMTP服务帐号
            strPwd = "password";       //SMTP服务密码
            strFrom = "chenjun@webjx.com";  //发送方邮件地址

            SmtpClient _smtpClient = new SmtpClient();
            _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
            _smtpClient.Host = strHost; ;//指定SMTP服务器
            _smtpClient.Credentials = new System.Net.NetworkCredential(strAccount, strPwd);//用户名和密码

            MailMessage _mailMessage = new MailMessage(strFrom, to);
            _mailMessage.Subject = title;//主题
            _mailMessage.Body = content;//内容
            _mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文编码
            _mailMessage.IsBodyHtml = true;//设置为HTML格式
            _mailMessage.Priority = MailPriority.High;//优先级

            try
            {
                _smtpClient.Send(_mailMessage);
                return true;
            }
            catch
            {
                return false;
            }
        }