Eric's Blog

有需求才有进步

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。

在.Net中,System.Web.Mail类库里所提供的邮件发送的对象、属性和方法,详情如下:


1. MailMessage类
提供属性和方法来创建一个邮件消息对象。

2. MailAttachments类
提供属性和方法来创建一个邮件附件对象。

3. SmtpMail类
提供属性和方法通过使用windows 2000 CDOSYS 的消息组件的联合数据对象来发送邮件消息)。

属性:

1.先简单介绍SmtpMail的属性:
SmtpServer用于指定SMTP的地址,如smtp.zuoyefeng.com,192.168.0.123

2.MailMessage属性
From -- 发送邮件的地址
To -- 接受邮件的地址
Subject -- 邮件的标题
Priority -- 邮件的优先级(有效值为High,Low,Normal)
Attachments -- 返回一个集合,代表附件
Bcc -- 密送地址
Cc -- 抄送地址
Body -- 获取或是设置电子邮件消息的内容
BodyFormat -- 获取或是设置MailFormat的枚举值,此值指定消息体邮件的格式(Html格式、Text格式)
Bodyencoding -- 指定消息的编码方式编码(主要有Base64,UUencode)
其他略。

密送就是你群发邮件时收邮件的人无法看到你发给了多少人以及他们的邮件地址,抄送就是群发邮件时收邮件的人则可以看到你发给了多少人以及他们的邮件地址。

3.SmtpMail类的Send方法,它的目的就是发送邮件,有两个重载方法。
1. SmtpMail.Send("发送邮件的地址","接受邮件的地址","邮件的标题","邮件消息的内容")

这个方法很简单,不适合发送带附件的邮件。

2. SmtpMail.Send(MailMessage)

此方法复杂、灵活,适合发送附件,而且可以设置MailMessage对象的各种属性值。


如果我们用ASP.NET写一个邮件发送的程序,那么首先应该如何得到SMTP。有两种方法:第一种方法调用目前知名的邮件服务提供商的SMTP,比如新浪、搜狐、网易的免费电子邮箱的SMTP;第二种方法是自己装一个SMTP虚拟服务器,要安装IIS可一同安装。

下面的代码分别采用上述两种方法,实现了发送邮件的功能。

  页面:sendmail.aspx

<%@ Page language="c#" Codebehind="sendmail.aspx.cs" AutoEventWireup="false" Inherits="aspnet300.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>昨夜风C#课件</title>
 </HEAD>
 <body>
  <form id="Form1" method="post" runat="server">
   <FONT face="宋体">
    <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="500" align="center" border="1">
     <TR>
      <TD>一、在ASP.NET利用知名的邮件服务提供商的SMTP来发送邮件
      </TD>
     </TR>
     <TR>
      <TD>
       <asp:Button id="Send001" runat="server" Text="点击开始发送"></asp:Button></TD>
     </TR>
     <TR>
      <TD>二、使用SMTP服务器来发送邮件</TD>
     </TR>
     <TR>
      <TD>
       <asp:Button id="send002" runat="server" Text="点击这里发送"></asp:Button></TD>
     </TR>
    </TABLE>
   </FONT>
  </form>
 </body>
</HTML>

  后置代码:sendmail.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Mail;

namespace aspnet300
{

 public class WebForm1 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Button send002;
  protected System.Web.UI.WebControls.Button Send001;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   InitializeComponent();
   base.OnInit(e);
  }
  
  private void InitializeComponent()
  {   
   this.Send001.Click += new System.EventHandler(this.Send001_Click);
   this.send002.Click += new System.EventHandler(this.send002_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void Send001_Click(object sender, System.EventArgs e)
  {
   //引入 using System.Web.Mail;
   MailMessage JMessage;
   MailAttachment Fujian;

   // 创建一个附件对象
   Fujian = new MailAttachment("d:\\se.txt");//发送邮件的附件
   // 创建邮件消息
   JMessage = new MailMessage();
   JMessage.From = "zuoyefeng@126.com";//源邮件地址
   JMessage.To = "zuoyefeng@sohu.com";//目的邮件地址,也就是发给我哈
   JMessage.Subject = "欢迎访问昨夜风";//发送邮件的标题
   JMessage.Body = "<table border=1><tr><td><a href=http://www.zuoyefeng.com>昨夜风网站</td></tr><tr><td>网址: www.zuoyefeng.com</td></tr></table>!";//发送邮件的内容
   JMessage.Attachments.Add( Fujian );//将附件附加到邮件消息对象中

   //有的邮件服务器在发送邮件时需要再次认证(一般是为了防治垃圾邮件的蔓延),那么如果是.net1.1以上的版本,可以加入:

   //基本权限
   JMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
   //用户名
   JMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "zuoyefeng") ; //邮局用户名
   //密码
   JMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "00001111"); //邮局密码
   //如果没有上述三行代码,则出现如下错误提示:服务器拒绝了一个或多个收件人地址。
   //SMTP地址
   SmtpMail.SmtpServer = "smtp.126.com";
   //开始发送邮件
   SmtpMail.Send(JMessage );
 
  }

  private void send002_Click(object sender, System.EventArgs e)
  {
   

   MailMessage JMessage;
   MailAttachment Fujian;

   // 创建一个附件对象
   Fujian = new MailAttachment("d:\\se.txt");//发送邮件的附件
   // 创建邮件消息
   JMessage = new MailMessage();
   JMessage.From = "zuoyefeng@126.com";//源邮件地址
   JMessage.To = "zuoyefeng@sohu.com";//目的邮件地址,也就是发给我哈
   JMessage.Subject = "欢迎访问昨夜风";//发送邮件的标题
   JMessage.Body = "<table border=1><tr><td><a href=http://www.zuoyefeng.com>昨夜风网站</td></tr><tr><td>网址: www.zuoyefeng.com</td></tr></table>!";//发送邮件的内容
   JMessage.Attachments.Add( Fujian );//将附件附加到邮件消息对象中

   //SMTP地址
   SmtpMail.SmtpServer = "192.168.0.123";

   //开始发送邮件
   SmtpMail.Send( JMessage );

  }
 }
}

posted on 2008-03-31 15:40  Eric.Chai  阅读(828)  评论(0编辑  收藏  举报