分享
 
 
 

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

王朝c#·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1、使用outLook提供的发送

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

优点:开发简单

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

邮件发送的代码如下:

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"

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类

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用户验证问题

如果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"

'定义邮件的发送地址

mailObj.From = "lihonggen@163.com"

'定义邮件的接收地址

mailObj.To = " lihonggen0@163.com "

'定义邮件的暗送地址

mailObj.Bcc "aa@sina.com"

'定义邮件的抄送地址

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

'定义邮件的主题

mailObj.Subject = "主题"

'定义邮件的主体

mailObj.Body = "邮件主体!"

'邮件以 HTML的格式发送

mailObj.BodyFormat = MailFormat.Html

'定义邮件的有限级,在此设定为高

mailObj.Priority = MailPriority.High

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

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”命令标识发件人

客户端:HELO server.com

服务器端:250 server.com

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

客户端: MAIL FROM: 服务器端:250 OK4、客户端发送RCPT命令标识收件人,服务器端回应是否愿意为收件人接受邮件客户端:RCPT T服务器端:250 OK5、协商结束后用命令DATA发送发送邮件客户端:DATA服务器端:354 Start mail input: end with.6、客户端以.表示结束输入内容一起发送出去客户端:Subject:内容.7、客户端用QUIT命令退出。客户端:QUIT服务器端:250 server.com closing transmission channel优点:可以在此基础上开发出自己的组件,利用Sockets我们可以进行网络编程开发缺点:程序量相对较多,发送邮件的代码如下:Dim sendData As StringDim szData As Byte()Dim CRLF As StringCRLF = "\r\n"'创建与服务器25端口的连接Dim SmtpServ As New TcpClient(txtsmtp.Text, 25)lstlog.Items.Clear()'显示服务器初始信息Dim NetStrm As NetworkStreamNetStrm = SmtpServ.GetStream()Dim RdStrm As New StreamReader(SmtpServ.GetStream())If RdStrm.ReadLine()"" Then lstlog.Items.Add(RdStrm.ReadLine())'sendData = "HELO server " + CRLFszData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())NetStrm.Write(szData, 0, szData.Length)lstlog.Items.Add(RdStrm.ReadLine())'标志发件人sendData = "MAIL FROM: " + "" + CRLFszData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())NetStrm.Write(szData, 0, szData.Length)lstlog.Items.Add(RdStrm.ReadLine())'标志收件人sendData = "RCPT T " + "" + CRLFszData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())NetStrm.Write(szData, 0, szData.Length)lstlog.Items.Add(RdStrm.ReadLine())'准备发送内容sendData = "DATA " + CRLFszData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())NetStrm.Write(szData, 0, szData.Length)lstlog.Items.Add(RdStrm.ReadLine())'发送主题sendData = "SUBJECT: " + txtsub.Text + CRLF'发送内容sendData = sendData + txtmsg.Text + CRLF'结束发送sendData = sendData + "." + CRLFszData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())NetStrm.Write(szData, 0, szData.Length)lstlog.Items.Add(RdStrm.ReadLine())'退出sendData = "QUIT " + CRLFszData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())NetStrm.Write(szData, 0, szData.Length)lstlog.Items.Add(RdStrm.ReadLine())'关闭连接NetStrm.Close()RdStrm.Close()lstlog.Items.Add("连接关闭")lstlog.Items.Add("发送成功")大家还可以参考:使用C# 创建邮件发送组件(SMTP)http://www.aspcool.com/lanmu/browse1.asp?ID=968&bbsuser=csharp4、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 = 2Mymail.Send()Mymail = Nothing5、使用Jmail组件Jmail具有以下特点:(1)可以发送附件;(2)详细日志能力,便于你查看问题所在;(3)设置邮件发送的优先级;(4)支持多种格式的邮件发送,比如说以HTML或者TXT的方式发送邮件。这是个免

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有