.NET环境下Email的技术介绍

一、NET环境下几种不同的邮件发送解决方案
 1、 WEB开发,在ASP.NET中引用System.Web.Mail类
邮件消息是通过内置在 Microsoft Windows 2000 中的 SMTP 邮件服务或任意的 SMTP 服务器来传送的。System.Web.Mail 命名空间中生成的SmtpMail类可用于在C#网络程序中发送SMTP邮件。此命名空间中的类可以在 ASP.NET 或任何托管应用程序。在System.Web.Mail中提供用于构造电子邮件附件的属性和方法的类MailAttachment和用于构造电子邮件的属性和方法的类MailMessage。
 SmtpMail类
        属性:
SmtpServer获取或设置要用于发送所有电子邮件的 SMTP 邮件服务器的名称。
方法:
Send()                           发送电子邮件。
 MailMessage类
        属性:
       Attachment              指定随消息一起传输的附件列表。
       Bcc                           获取或设置以分号分隔的电子邮件地址列表,这些地址接收电子邮件的匿名副本                                              (BCC)。
Body                        获取或设置电子邮件的正文。
BodyEncoding          获取或设置电子邮件正文的编码类型。
BodyFormat            获取或设置电子邮件正文的内容类型。
Cc                           获取或设置以分号分隔的电子邮件地址列表,这些地址接收电子邮件的抄送副本 (CC)。
From                       获取或设置发件人的电子邮件地址。
Headers                  指定随电子邮件一起传输的自定义标头。
Priority                   获取或设置电子邮件的优先级。
Subject                  获取或设置电子邮件的主题行。
To                          获取或设置收件人的电子邮件地址。
UrlContentBase     获取或设置 Content-Base HTTP 标头,即在 HTML 编码的电子邮件正文中使用的所有相对URL 的 URL 基。
UrlContentLocation获取或设置电子邮件的 Content-Location HTTP 标头。
 MailAttachment类
        构造函数:
       public MailAttachment( string filename);
filename 附件文件的名称。
代码如下:
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 WebMail
{
     public class WebForm1 : System.Web.UI.Page
     {
          protected System.Web.UI.WebControls.Button Button1;
          private System.Web.Mail.MailMessage m_Mail;
          private void Page_Load(object sender, System.EventArgs e)
         {
              m_Mail=new MailMessage();
         }
          #region Web Form Designer generated code
          override protected void OnInit(EventArgs e)
         {
              InitializeComponent();
              base.OnInit(e);
         }
          private void InitializeComponent()
         {   
              this.Button1.Click += new System.EventHandler(this.Button1_Click);
              this.Load += new System.EventHandler(this.Page_Load);
         }
          #endregion
          private void Button1_Click(object sender, System.EventArgs e)
         {
              '定义SMTP服务器的名称
        .SmtpServer = "smtp.163.com"; m_Mail
            '定义邮件的发送地址
              m_Mail.From=" lihonggen@163.com ";;
              '定义邮件的接收地址
        .To = " lihonggen0@163.com"; m_Mail
              '定义邮件的暗送地址
                '.Bcc "aa@sina.com" m_Mail
              '定义邮件的抄送地址
           '.Cc = "aaa@sina.com" m_Mail
              '定义邮件的主题
            .Subject = "主题"; m_Mail
             '定义邮件的主体
                .Body = "邮件主体!"; m_Mail
                '邮件以 HTML的格式发送
                .BodyFormat = MailFormat.Html; m_Mail
              '定义邮件的有限级,在此设定为高
                .Priority = MailPriority.High; m_Mail
            '给发送的邮件附加上一个附件
              m_Mail .Attachments.Add(New MailAttachment("c:/lihonggen.doc"));
              SmtpMail.Send(m_Mail);
         }
     }
}
2、 在开发Windows 应用程序中使用System.Net.Sockets
也是基于SMTP协议
一、SMTP协议简介
⑴  客户端通过服务器的25端口建立TCP/IP连接
服务器端: 220 server.com Simple Mail Transfer Service Ready
⑵  客户端使用“HELO”命令标识发件人
客户端:HELO server.com
服务器端:250 server.com
⑶  客户端发送MAIL命令,服务器端以OK作为响应表明准备接收
客户端: MAIL FROM: <A@B.com>
服务器端: 250 OK
⑷  客户端发送RCPT命令标识收件人,服务器端回应是否愿意为收件人接受邮件
客户端:RCPT TO: <d@e.com>
服务器端:250 OK
⑸  协商结束后用命令DATA发送发送邮件
客户端:DATA
服务器端:354 Start mail input: end with <CRLF>.<CRLF>
⑹  客户端以.表示结束输入内容一起发送出去
客户端:Subject:  <CRLF>
内容<CRLF>
.<CRLF>
⑺ 客户端用QUIT命令退出。
              客户端:QUIT
服务器端:250 server.com closing transmission channel
优点:可以在此基础上开发出自己的组件,利用Sockets 我们可以进行网络编程开发
缺点:程序量相对较多,
因代码过长所以在此不显示了
3、 IIS SMTP自带的基本的发信组件CDONTS
你不必专门下载,微软已经提供了这个组件,只要安装了2000,NT的SMTP就会有的。
优点:组件由操作系统自带
缺点:功能比较差,可扩展性不强
        Mymail = CreateObject("CDONTS.NewMail")
        Mymail.From = *** '信件发送者信箱
        Mymail.To = *** ‘信件接收者信箱
        Mymail.CC = *** '抄送
        Mymail.BCC = *** ’密件发送
        Mymail.Subject = *** ‘信件主题
        Mymail.Body = *** ’信件正文
        '设置优先级,0-不重要,1-一般,2-重要。
        Mymail.Importance = 2
        Mymail.Send()
        Mymail = Nothing
4、使用JMail组件
Jmail具有以下特点:
(1)可以发送附件;
(2)详细日志能力,便于你查看问题所在;
(3)设置邮件发送的优先级;
(4)支持多种格式的邮件发送,比如说以HTML或者TXT的方式发送邮件。这是个免费的组件。
(5)密件发送/(CC)抄送/紧急信件发送能力;
(6)最关键的就是--免费的组件,不必发钱,所以非常值得使用。
JMail组件的常用属性:
Body   邮件正文
Logging   调用Log记录,供Debug用
Priority   邮件的优先程度,从1到5
Sender   发件人
ServerAddress   SMTP服务器的IP地址或名称
Subject   邮件标题
 
JMail组件的常用方法:
AddAttachment   指定附件文件
AddRecipient   加入一个收件人
AddRecipientBCC   隐藏的副本抄送,只有发件人和BCC收件人知道。
AddRecipientCC   副本抄送
Execute   送出邮件
 
了解必要的属性及方法后,余下的部分接收使用者输入的Email,当成参数传给AddRecipient方法,然后根据需要填上其余属性,最后以Execute方法寄出。例如:
        JMail = Server.CreateObject("JMail.SMTPMail")
        JMail.Logging = True
        JMail.ServerAddress = "202.96.144.48"
        JMail.Sender = "lihonggen0@163.com"
        JMail.Subject = "subject."
        JMail.Body = "body."
        JMail.AddRecipient("bbbb@163.com")
        JMail.AddAttachment("c:/go.gif")
        JMail.Priority = 3
        JMail.Execute()
        JMail = Nothing
 
二、NET环境下邮件接收解决方案
      
POP3协议是一个客户读取或接收存储在远程邮件服务器上的邮件最常用的基本协议,一旦客户机与服务器建立一个连接,就发送简单文本命令,并且服务器以恰当的信息来响应。必须知道使用的命令是什么,以什么样的顺序发出,才能正确地从服务器上收取信件。
注意点:在登陆服务器时端口号应该是 110
POP3的执行命令
首先手工输入
telnet pop.163.com
1.权限检查命令

执行命令
描述
USER
用户名
PASS
密码

 
2.获取信息命令

执行命令
描述
STAT
响应包含邮件的数量和全部邮件大小
LIST
收到一份个人邮件列表,列出每封邮件的大小

 
3.检索邮件

执行命令
描述
TOP
它能取得邮件的报头并且从信件中挑出文本行的数目
RETR
返回邮件的全部字节数目和整个邮件的文本
QUIT
终止会话,关闭邮箱

 
由于把每个功能都写下来收件代码就会过长,因此只写了USER、PASS、STAT执行命令 http://www.cnblogs.com/surprise/archive/2004/09/24/46243.aspx#FeedBack,其它执行命令的代码请参考有关文档。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值