首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> ASP.NET教程
.NET环境下几种不同的邮件发送解决方案-.NET教程,VB.Net语言
作者:网友供稿 点击:20
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
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.xxx.com"
定义邮件的发送地址
mailobj.from = "lihonggen@xxx.com"
定义邮件的接收地址
mailobj.to = " aaa@xxx.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:\aa.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: <a@b.com>
服务器端: 250 ok
4、 客户端发送rcpt命令标识收件人,服务器端回应是否愿意为收件人接受邮件
客户端:rcpt to: <c@d.com>
服务器端:250 ok
5、 协商结束后用命令data发送发送邮件
客户端:data
服务器端:354 start mail input: end with <crlf>.<crlf>
6、 客户端以.表示结束输入内容一起发送出去
客户端:subject: <crlf>
内容<crlf>
.<crlf>
7、客户端用quit命令退出。
客户端:quit
服务器端:250 server.com closing transmission channel

优点:可以在此基础上开发出自己的组件,利用sockets我们可以进行网络编程开发
缺点:程序量相对较多,

发送邮件的代码如下:

dim senddata as string
dim szdata as byte()
dim crlf as string
crlf = "\r\n"

创建与服务器25端口的连接
dim smtpserv as new tcpclient(txtsmtp.text, 25)
lstlog.items.clear()

显示服务器初始信息
dim netstrm as networkstream
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())
netstrm.write(szdata, 0, szdata.length)
lstlog.items.add(rdstrm.readline())

标志发件人
senddata = "mail from: " + "<" + txtfrom.text + ">" + crlf
szdata = system.text.encoding.ascii.getbytes(senddata.tochararray())
netstrm.write(szdata, 0, szdata.length)
lstlog.items.add(rdstrm.readline())

标志收件人
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())

发送主题
senddata = "subject: " + txtsub.text + crlf
发送内容
senddata = senddata + txtmsg.text + crlf

结束发送
senddata = senddata + "." + crlf
szdata = system.text.encoding.ascii.getbytes(senddata.tochararray())
netstrm.write(szdata, 0, szdata.length)
lstlog.items.add(rdstrm.readline())

退出
senddata = "quit " + crlf
szdata = 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=csharp

4、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

5、使用jmail组件
jmail具有以下特点:
(1)可以发送附件;
(2)详细日志能力,便于你查看问题所在;
(3)设置邮件发送的优先级;
(4)支持多种格式的邮件发送,比如说以html或者txt的方式发送邮件。这是个免费的组件。
(5)密件发送/(cc)抄送/紧急信件发送能力;
(6)最关键的就是--免费的组件,不必发钱,所以非常值得使用。
网站:http://www.dimac.net/,目前版本是4.3

jmail组件的常用属性:
body   邮件正文
logging   调用log记录,供debug用
priority   邮件的优先程度,从1到5
sender   发件人
serveraddress   smtp服务器的ip地址或名称
subject   邮件标题

jmail组件的常用方法:
addattachment   指定附件文件
addrecipient   加入一个收件人
addrecipientbcc   隐藏的副本抄送,只有发件人和bcc收件人知道。
addrecipientcc   副本抄送
execute   送出邮件

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

dim jmail
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

总结:选择何种方案,视程序的用途和需求而定,本文例出的几种方案,供大家参考。例如用友软件u8,调用outlook组件,一样整合到自己的软件中。我编写的管理系统,自己写组件(smtp),功能同样强大,不过coding的时间就长了!
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP.NET三层架构示例(中文版)-.NET教程,面向对象编程
·C#自定义控件制作篇-.NET教程,C#语言
·asp.net上传图片时,产生预览
·关于DataGrid 数据导入Excel乱码-ASP教程,数据库相关
·ado.net中数据库连接方式
·用asp.net(c#)连接oracle数据库的方法
·网页制作小技巧-ASP教程,ASP应用
·动态改变asp.net网页的标题
·asp.net中利用cookies保持客户端信息
·关于C#中switch语句的一点注意-.NET教程,C#语言
最新文章
·用vb.net 2005编写定时关机程序_vb/vb.net教程
·vb.net实现窗体图标最小化到状态栏_vb/vb.net教程
·如何提高google adsense单价:渠道篇_网赚技巧
·做百度主题推广的经验谈_网赚技巧
·解读电子商务规划关键词_站长心得
·手把手教你建立自己的网站_站长心得
·学网页设计与网页制作,你该做些什么?_站长心得
·写给新人的google排名知识_google推广
·google网络推广adwords帐户申请解析_google推广
·如何合理提高google adsense的收入_google推广
相关主题
  • .net环境下几种不同的邮件发送解决方案_邮件服务器
  • .NET环境下水晶报表使用总结 lihonggen0(原作)-.NET教程,报表/图形/Office
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭