邮件发送解决方案在.NET环境下几种不同方法示例

1、 使用outLook提供的发送

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

优点:开发简单

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

 

邮件发送的代码如下:

    Private Sub Send()

        Dim outObj As New Outlook.Application()

        Dim Item As Outlook.MailItemClass

        Item = outObj.CreateItem(0)

        Item.To = " lifuyun023@163.com "

        Item.Subject = "hello"

        Item.Body = "hell"

        Item.Attachments.Add("C:/lifuyun023.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 命名空间包含使您可以使用 CDOSYSWindows 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 = "lifuyun023@163.com"

 

        '定义邮件的接收地址

        mailObj.To = " lifuyun023@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:/lifuyun023.doc"))

        smTp.Send(mailObj)

    End Sub

 

3、 VB.NETC#开发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: <d@e.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

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

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

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

        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   邮件的优先程度,从15

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 = " lifuyun023@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组件,一样整合到自己的软件中。我编写的GIS系统,自己写组件(SMTP),功能同样强大,不过Coding的时间就长了!

 

注:此文有一部分资料摘录

Author:李福云

E_mail lifuyun023@163.com

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: EasyModbus.NET C# 是一个开源的 Modbus TCP/IP 通信库,使用C#语言编写,用于在 .NET 环境中实现Modbus通信协议。它提供了使用TcpClient或UdpClient进行通信的简单接口,同时支持多个Modbus设备的连接和管理。EasyModbus.NET C# 可以在Windows、Linux以及其他 .NET环境下运行,是一种非常实用的工具。 EasyModbus.NET C# 有丰富的API,可以通过它进行Modbus协议的读写操作,包括读写Modbus寄存器、读写多个寄存器、读取Coil、Input等等。同时,EasyModbus.NET C# 也提供了对于MODBUS TCP / IP、MODBUS UDP 、RTU和ASCII通信协议的支持,可以灵活选择并切换协议类型,以满足不同的需求。 EasyModbus.NET C# 还提供了详细的文档和示例,可以帮助用户快速上手,并且找到解决方案。此外,EasyModbus.NET C# 还支持多语言环境,包括中文、英文、德文等几十种语言,并且能够在多种操作系统(如Windows和Linux)上无缝运行,适用性非常广泛。 EasyModbus.NET C# 在工业控制、自动化设备等方面的应用非常广泛,它的优点包括简单易用、接口完善、高效稳定、代码开放等等。EasyModbus.NET C# 不仅可以实现Modbus协议通信的实际应用,也可以作为学习、研究Modbus协议的研究者使用,并且EasyModbus.NET C#源代码也是开放的,用户可以根据个人需求进行调整和定制。 ### 回答2: Easymodbus是一个免费的Modbus协议库,针对C#编程语言和.NET框架,可以轻松实现Modbus TCP、Modbus RTU和Modbus ASCII通信。它支持从站和主站的通信,并且具有简单易用、高性能、开源免费等特点。 Easymodbus .NET C#库提供了许多功能,如读取和写入单个和多个位、单个和多个寄存器,快速读取和写入连续位和寄存器,以及读取和写入文件寄存器和输入寄存器。使用Easymodbus库可以轻松实现设备之间的数据交换,具有简便、高效、准确的特点,适用于多种应用场景,如工业自动化、数据采集、物联网等领域。 Easymodbus库的代码容易理解和修改,可以扩展和调整实现Modbus传输协议。此外,它还为用户提供了详细的文档和示例程序,可以帮助用户掌握如何使用库的各种功能。总之,Easymodbus .NET C#库是一个非常有用的工具,可以帮助工程师轻松实现Modbus通信,提高生产效率和质量。 ### 回答3: Easymodbus .net c是一个开源的Modbus通讯库,使用C#语言编写。它支持TCP和RTU协议,可在Windows和Linux操作系统上运行。 Easymodbus .net c被广泛应用于工业自动化领域,用于与各种设备进行通信,如PLC(可编程逻辑控制器)、传感器和执行器等。该库提供了易于使用的API,使用户可以轻松地实现Modbus通信,同时也提供了丰富的文档和示例代码以便用户学习和使用。Easymodbus .net c也可以与其他编程语言集成,如Java和Python。该库具有稳定性和可靠性,因此它是一个高效的解决方案,帮助工程师们在工业自动化项目中更轻松地实现Modbus通信,提高设备控制的效率和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值