转自:http://dev.yesky.com/msdn/241/3417241.shtml

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

  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)

  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的时间就长了!

转载于:https://www.cnblogs.com/jenner-lin/archive/2007/07/11/813778.html

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

  1. 几种不同的邮件发送解决方案

    1.使用outLook提供的发送 如:我见过的用友软件U8生产制造(演示版),其中的邮件功能就是通过调用outLook的ActiveX 组件 优点:开发简单 缺点:依赖outlook组件,SMTP 邮 ...

  2. 单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率

    这段时间从头温习设计模式.记载下来,以便自己复习,也分享给大家. [java] view plaincopy package com.iter.devbox.singleton; /** * 饿汉式 ...

  3. Linux环境下几种常用的文件系统

    Linux环境下几种常用的文件系统: 1.ext2 ext2是为解决ext文件系统的缺陷而设计的可扩展的.高性能的文件系统,又被称为二级扩展文件系统.它是Linux文件系统中使用最多的类型,并且在速度 ...

  4. cad模型轻量化_CAD环境下一种支持大装配的产品模型轻量化技术

    CAD环境下一种支持大装配的产品模型轻量化技术 针对CAD环境下操作复杂大装配常出现加载和显示困难的问题,提出了一种CAD环境下的轻量化解决方案,将参数化表达和多细节层次(LOD)轻量表达共同定义于产 ...

  5. mysql集群session_集群/分布式环境下5种session处理策略

    前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A.B两台服务器,用户在第一次访问网站时,Ngin ...

  6. android登录加密传输,android环境下两种md5加密方式(示例代码)

    在平时开发过程中,MD5加密是一个比較经常使用的算法,最常见的使用场景就是在帐号注冊时,用户输入的password经md5加密后,传输至server保存起来.尽管md5加密经经常使用.可是md5的加密 ...

  7. 【Linux运维-集群技术进阶】集群/分布式环境下5种session处理策略

    前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A.B两台服务器,用户在第一次访问网站时,Ngin ...

  8. 集群/分布式环境下5种session处理策略

    前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A.B两台服务器,用户在第一次访问网站时,Ngin ...

  9. Unity环境下RTMP推流+RTMP播放低延迟解决方案

    在本文之前,我们发布了Unity环境下的RTMP推流(Windows平台+Android平台)和RTMP|RTSP拉流(Windows平台+Android平台+iOS平台)低延迟的解决方案,今天做个整 ...

最新文章

  1. C语言中定义加号的数据类型,C/C++知识点之c语言基础数据类型及命名规范
  2. SpringBoot - 优雅的实现【异步编程】
  3. roads 构筑极致用户体验_长安马自达「悦马星空」计划上线,为用户带来极致服务体验...
  4. 公司培训文档-JavaScript[对象.属性]集锦
  5. ccxprocess启动项可以禁用么_Mac怎么禁用Adobe无用自启项?
  6. Yahoo!团队实践分享:网站性能优化的34条黄金守则(二)
  7. java编写数字时钟_用JAVA写数字时钟
  8. Android获取所在城市坐标及城市信息(逆地理位置编码)
  9. 系统集成项目管理工程师14真题解析
  10. win10下装黑苹果双系统
  11. 黄渤海浅层气的分布及特征综述
  12. CKPlayer视频地址加密方法
  13. 【纪中受难记】——Day23:受刑
  14. java Spring IOC
  15. 支付接口的开放有什么好处第三方支付API文档如何对接云收呗支付平台接口使用总结
  16. ImportError: cannot import name ‘calinski_harabaz_score‘ from ‘sklearn.metrics‘
  17. 视觉SLAM十四讲笔记
  18. 量纲对回归结果的影响_影响浙江省生产总值因素的回归分析.doc
  19. 《我学区块链》—— 五、Remix简单使用
  20. leetcode 789. 逃脱阻碍者

热门文章

  1. 腾讯课堂:了解it技术圈的虚拟化容器化之docker
  2. code第一部分数组:从有序数组中移除重复的数据
  3. 跟着百度学PHP[4]OOP面对对象编程-16-switch逻辑就语句
  4. PowerShell 开启无线热点
  5. django 安装/部署过程
  6. Linux Virtual Server LVS Load Balancing
  7. LeetCode 1111. 有效括号的嵌套深度
  8. 数字在排序数组中的出现次数
  9. mysql数据库的创建外键_Mysql表创建外键报错解决方案
  10. 列举python的数据类型_Python的数据类型