注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Windows >> 系统故障 >> 系统故障 >> Windows正文

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

文章来源:ChinaITLab 收集整理 作者:佚名 更新时间:2004-9-2 【 】 【加入收藏

  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 OK
  
  4、客户端发送RCPT命令标识收件人,服务器端回应是否愿意为收件人接受邮件
  客户端:RCPT T
  
  服务器端:250 OK
  
  5、协商结束后用命令DATA发送发送邮件
  客户端:DATA
  
  服务器端:354 Start mail input: end with .
  
  6、客户端以.表示结束输入内容一起发送出去
  客户端:Subject: 
  
  内容
  
  .
  
  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 T " + "<" + 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的方式发送邮件。这是个免
  • 上一篇Windows:

  • 下一篇Windows:
  • 最 新 热 门
     修改boot.ini 让启动菜单变“彩”
     XP/2003 Server操作系统配置与管理
     黑客又出手 解析新时代的网络攻击技术
     Windows Vista系统服务安全强化策略
     SQL实现其他进制到十进制的转换
     请正确对比Windows和Linux的差异
     60秒就能给Win Vista瘦身2GB
     Vista系统中IE提示证书错误解决方法
     Vista无法正常用输入法的两个解决方法
     深入分析Windows操作系统死机问题
    最 新 推 荐
     Vista系统中IE提示证书错误解决方法
     误将系统进程当病毒 Vista受折磨遭崩溃
     开机有桌面但无法进入系统的解决
     误将系统进程当病毒 Vista受折磨遭崩溃
     当Windows 2000崩溃 如何进行修复
     笔记本电脑重启死机情况分析及对策
     罪魁祸首:Vista系统变慢四大原因
     系统自动重启应该考虑的问题
     微软解决Windows Vista显存溢出问题
     必看!最经典的Windows错误提示
    相 关 文 章

    激活Windows Vista中隐藏的Telnet
    NetSky蠕虫病毒样本分析报告
    探索Windows XP SP3 beta的新事物
    Windows Server 2008 Beta 3官方ISO下载
    把server 2008 beta3 sp1 v.222变为家用操作…
    一步一步申请 Windows Server 2008 Beta 3 …
    在Windows Vista中安装Telnet客户端
    Windows Vista SP1 Beta新功能初体验
    Windows Server 2008 Beta 3 下载
    无需Ctrl+Alt+Delete登入Win 2003系统

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用