分类广告


推荐文章

  • 没有找到任何内容!
您当前的位置:中国站长下载网络编程NET专区 → 文章内容

.NET环境下几种不同的邮件发送解决方案

  • 作者:不详    来源:网络转载    发布时间:2008-2-28 8:32:43
  • 字体大小:

1、使用outLook提供的发送

如:我见过的用友软件U8生产制造(演示版),其中的邮件功能就是通过调用outLook的ActiveX 组件 Chinaz

优点:开发简单

中.国站长站

缺点:依赖outlook组件,SMTP 邮件服务

Www_Chinaz_com

邮件发送的代码如下: 中国.站.长站

以下为引用的内容:

  Private Sub Send() 中.国.站长站

    Dim outObj As New Outlook.Application()

中国站长_站,为中文网站提供动力

    Dim Item As Outlook.MailItemClass

    Item = outObj.CreateItem(0)

    Item.To = "lihonggen0@163.com "

中.国.站长站

    Item.Subject = "hello" Www~Chinaz~com

    Item.Body = "hell"

中.国站长站

    Item.Attachments.Add("C:\abc.txt")

中国站长_站,为中文网站提供动力

    Item.Send()

End Sub

中国.站.长站

参考:使用 Microsoft Outlook 2002 开发解决方案 中国.站.长站

http://www.microsoft.com/china/msdn/library/dndotnetout2k2/html/odc_oldevsol.asp

2、WEB开发,在ASP.NET中引用System.Web.Mail类

zhuye123.com

System.Web.Mail 命名空间包含使您可以使用 CDOSYS(Windows 2000 的协作数据对象)消息组件来构造和发送消息的类。邮件消息是通过内置在 Microsoft Windows 2000 中的 SMTP 邮件服务或任意的 SMTP 服务器来传送的。此命名空间中的类可以在 ASP.NET 或任何托管应用程序

MailAttachment提供用于构造电子邮件附件的属性和方法。

中.国站长站

MailMessage提供用于构造电子邮件的属性和方法。

SmtpMail提供用于使用 Windows 2000 的协作数据对象 (CDOSYS) 消息组件来发送消息的属性和方法。 中.国.站长站

邮件可以通过 Microsoft Windows 2000 中内置的 SMTP 邮件服务或任意 SMTP 服务器来传送。System.Web.Mail 命名空间中的类型可以在 ASP.NET 或任何托管应用程序使用。

Smtp服务器的设置,现在一些免费邮件提供商是不再提供针对所有邮件提供Smtp服务,在发送邮件的时候,需要验证用户信息,考虑Smtp用户验证问题 Www~Chinaz~com

如果Smtp服务器在本地计算机,发送速度很快的,基本上不用担心,如果不是本地服务器,那么发送的时候最好不要以此太多,一是速度问题,二是以此发送太多邮件,Smtp服务器可能认为是垃圾邮件而拒绝服务

代码如下:

中国

以下为引用的内容:

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim mailObj As New MailMessage()

 

[中国站长站]

    Dim smtp As SmtpMail 中国.站长站

 

中国站长.站

    '定义SMTP服务器的名称

    smtp.SmtpServer = "smtp.163.com"

zhuye123.com

    '定义邮件的发送地址

    mailObj.From = "lihonggen@163.com"

Chinaz_com

 

    '定义邮件的接收地址 中国站.长站

    mailObj.To = " lihonggen0@163.com"

  中.国.站长站

    '定义邮件的暗送地址 Www^

    '  mailObj.Bcc "aa@sina.com" 中国站长.站

  中国站长_站,为中文网站提供动力

    '定义邮件的抄送地址 Chinaz~com

    '   mailObj.Cc = "aaa@sina.com"

 

    '定义邮件的主题

中国站.长站

    mailObj.Subject = "主题" 中国站长_站,为中文网站提供动力

 

Www_Chinaz_com

    '定义邮件的主体

中国.站长站

    mailObj.Body = "邮件主体!"

[中国站长站]

  Www_Chinaz_com

    '邮件以 HTML的格式发送 中国

    mailObj.BodyFormat = MailFormat.Html 中国

  [中国站长站]

    '定义邮件的有限级,在此设定为高 中.国站长站

    mailObj.Priority = MailPriority.High

 

站长.站

    '给发送的邮件附加上一个附件

Www^

    mailObj.Attachments.Add(New MailAttachment("c:\lihonggen.doc")) 中国

    smTp.Send(mailObj)

  End Sub

中国

3、在VB.NET或C#开发Windows 应用程序中使用System.Net.Sockets 中国站长.站

也是基于SMTP协议

[中国站长站]

一、SMTP协议简介

1、客户端通过服务器的25端口建立TCP/IP连接 站.长站

服务器端: 220 server.com Simple Mail Transfer Service Ready

2、客户端使用“HELO”命令标识发件人

Www.zhuye123.com

客户端:HELO server.com

中国站.长站

服务器端:250 server.com

3、客户端发送MAIL命令,服务器端以OK作为响应表明准备接收 Chinaz~com

客户端:MAIL FROM: <A@B.com> 中.国.

服务器端:250 OK

中.国站长站

4、客户端发送RCPT命令标识收件人,服务器端回应是否愿意为收件人接受邮件

[中国站长站]

客户端:RCPT TO: <d@e.com>

中国.站长站

服务器端:250 OK

5、协商结束后用命令DATA发送发送邮件

中国站.长站

客户端:DATA

服务器端:354 Start mail input: end with <CRLF>.<CRLF> [中国站长站]

6、客户端以.表示结束输入内容一起发送出去

Www_Chinaz_com

客户端:Subject: <CRLF>

内容<CRLF>

[中国站长站]

.<CRLF> Www.zhuye123.com

7、客户端用QUIT命令退出。

客户端:QUIT zhuye123.com

服务器端:250 server.com closing transmission channel

中.国.站长站

优点:可以在此基础上开发出自己的组件,利用Sockets我们可以进行网络编程开发

[中国站长站]

缺点:程序量相对较多,发送邮件的代码如下: [中国站长站]

以下为引用的内容:

    Dim sendData As String Chinaz

    Dim szData As Byte() 中.国.站长站

    Dim CRLF As String Www_Chinaz_com

    CRLF = "\r\n"

  Chinaz~com

    '创建与服务器25端口的连接 中国站长_站,为中文网站提供动力

    Dim SmtpServ As New TcpClient(txtsmtp.Text, 25) 站.长站

    lstlog.Items.Clear() 中.国.站长站

  [中国站长站]

    '显示服务器初始信息

    Dim NetStrm As NetworkStream Www_Chinaz_com

    NetStrm = SmtpServ.GetStream() 中.国站长站

 

中国站长.站

    Dim RdStrm As New StreamReader(SmtpServ.GetStream())

    If RdStrm.ReadLine() <> "" Then lstlog.Items.Add(RdStrm.ReadLine())

    '

    sendData = "HELO server " + CRLF 中国站.长站

    szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

Www~Chinaz~com

    NetStrm.Write(szData, 0, szData.Length)

中.国站长站

    lstlog.Items.Add(RdStrm.ReadLine()) 中国

 

Www^

    '标志发件人

Chinaz

    sendData = "MAIL FROM: " + "<" + txtfrom.Text + ">" + CRLF

Chinaz~com

    szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

zhuye123.com

    NetStrm.Write(szData, 0, szData.Length) Chinaz_com

    lstlog.Items.Add(RdStrm.ReadLine())

中.国.站长站

 

    '标志收件人 Www_Chinaz_com

    sendData = "RCPT TO: " + "<" + txtTo.Text + ">" + CRLF 中国.站.长站

    szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

中国站长_站,为中文网站提供动力

    NetStrm.Write(szData, 0, szData.Length) 中.国.

    lstlog.Items.Add(RdStrm.ReadLine()) 中国站长.站

 

    '准备发送内容

中国.站长站

    sendData = "DATA " + CRLF

    szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray()) 中国站长.站

    NetStrm.Write(szData, 0, szData.Length) 中.国站长站

    lstlog.Items.Add(RdStrm.ReadLine())

Www~Chinaz~com

 

    '发送主题

中国站.长站

    sendData = "SUBJECT: " + txtsub.Text + CRLF

中国

    '发送内容 Www~Chinaz~com

    sendData = sendData + txtmsg.Text + CRLF

Www^

  中国

    '结束发送 中国站长_站,为中文网站提供动力

    sendData = sendData + "." + CRLF

中.国站长站

    szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray()) zhuye123.com

    NetStrm.Write(szData, 0, szData.Length) Www_Chinaz_com

    lstlog.Items.Add(RdStrm.ReadLine())

  Www^

 

    '退出 Www.zhuye123.com

    sendData = "QUIT " + CRLF 中国

    szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

Chinaz_com

    NetStrm.Write(szData, 0, szData.Length)

中国.站.长站

    lstlog.Items.Add(RdStrm.ReadLine()) 中国.站.长站

 

中国站长_站,为中文网站提供动力

  站长.站

    '关闭连接

    NetStrm.Close() 中.国站长站

    RdStrm.Close() 站长.站

    lstlog.Items.Add("连接关闭")

中.国站长站

    lstlog.Items.Add("发送成功") Www.zhuye123.com

Www.zhuye123.com

大家还可以参考:使用C# 创建邮件发送组件(SMTP) [中国站长站]

http://www.aspcool.com/lanmu/browse1.asp?ID=968&bbsuser=csharp 中国站.长站

4、IIS SMTP自带的基本的发信组件CDONTS

你不必专门下载,微软已经提供了这个组件,只要安装了2000,NT的SMTP就会有的。 Www~Chinaz~com

优点:组件由操作系统自带

中国

缺点:功能比较差,可扩展性不强

以下为引用的内容:

    Mymail = CreateObject("CDONTS.NewMail")

中国站长_站,为中文网站提供动力

    Mymail.From = *** '信件发送者信箱 中国站.长站

    Mymail.To = *** ‘信件接收者信箱

zhuye123.com

    Mymail.CC = *** '抄送

Chinaz_com

    Mymail.BCC = *** ’密件发送

Chinaz_com

    Mymail.Subject = *** ‘信件主题 Www.zhuye123.com

    Mymail.Body = *** ’信件正文

    '设置优先级,0-不重要,1-一般,2-重要。

    Mymail.Importance = 2 中.国.

    Mymail.Send()

中.国.

    Mymail = Nothing 中.国.

中国站长_站,为中文网站提供动力

5、使用JMail组件

中国.站长站

Jmail具有以下特点:

(1)可以发送附件;

Chinaz_com

(2)详细日志能力,便于你查看问题所在;

中国站长.站

(3)设置邮件发送的优先级;

中国站.长站

(4)支持多种格式的邮件发送,比如说以HTML或者TXT的方式发送邮件。这是个免费的组件。

Www~Chinaz~com

(5)密件发送/(CC)抄送/紧急信件发送能力;

Chinaz~com

(6)最关键的就是--免费的组件,不必发钱,所以非常值得使用。 中国.站长站

网站:http://www.dimac.net/,目前版本是4.3

JMail组件的常用属性:

Www^

Body   邮件正文 Www.zhuye123.com

Logging   调用Log记录,供Debug用

Priority   邮件的优先程度,从1到5

Sender   发件人

zhuye123.com

ServerAddress   SMTP服务器的IP地址或名称

站.长站

Subject   邮件标题

Chinaz~com

JMail组件的常用方法: Chinaz

AddAttachment   指定附件文件 中.国.站长站

AddRecipient   加入一个收件人 Www.zhuye123.com

AddRecipientBCC   隐藏的副本抄送,只有发件人和BCC收件人知道。

Chinaz

AddRecipientCC   副本抄送

Chinaz

Execute   送出邮件

站长.站

了解必要的属性及方法后,余下的部分接收使用者输入的Email,当成参数传给AddRecipient方法,然后根据需要填上其余属性,最后以Execute方法寄出。例如: Www~Chinaz~com

以下为引用的内容:

    Dim JMail

    JMail = Server.CreateObject("JMail.SMTPMail")

Www~Chinaz~com

    JMail.Logging = True 中.国站长站

    JMail.ServerAddress = "202.96.144.48"

zhuye123.com

    JMail.Sender = "lihonggen0@163.com"

Chinaz

    JMail.Subject = "subject." 中国站.长站

    JMail.Body = "body." 中国.站.长站

    JMail.AddRecipient("bbbb@163.com") zhuye123.com

    JMail.AddAttachment("c:\go.gif") 中.国.站长站

    JMail.Priority = 3

中国站长_站,为中文网站提供动力

    JMail.Execute()

Chinaz_com

    JMail = Nothing 中国站长.站

中国.站.长站

总结:选择何种方案,视程序的用途和需求而定,本文例出的几种方案,供大家参考。例如用友软件U8,调用outlook组件,一样整合到自己的软件中。我编写的管理系统,自己写组件(SMTP),功能同样强大,不过Coding的时间就长了!