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

本文详细介绍五种邮件发送方法,包括调用Outlook组件、使用ASP.NET的System.Web.Mail类、基于SMTP协议的Socket编程、利用IIS SMTP组件CDONTS以及采用JMail组件。每种方法都附带具体实现代码,方便开发者根据实际需求选择最适合的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

        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("发送成功")

        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

        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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值