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

net6发送邮件demo net6发送邮件demonet6发送邮件demo 立即下载

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的时间就长了!
Goldwasser-Micali 公钥加密系统 1、二次剩余问题 对于整数n ,定义Zn∗={a∈Zn,gcd(a,n)=1}Z^*_n=\{ a∈Z_n,gcd(a,n) =1\}Zn∗​={a∈Zn​,gcd(a,n)=1} 。当存在d∈Znd \in Z_nd∈Zn​ ,使得 d2≡a mod nd^2 \equiv a \, mod \,nd2≡amodn ,称 a 为模 n 的二次剩余;否则称 a 为模 n的二次非剩余。判断 a 是否为模 n 的二次剩余的问题称为模n 的二次剩余问题。 \rule[-10pt]{14.3cm}{0.05em} 阅读详情

相关推荐

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 538

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

 转贴说明出处:http://www.microsoft.com/china/community/Column/27.mspx作者:李洪根(http://www.microsoft.com/china/community/Column/Lihonggen.mspx)1、使用outLook提供的发送如:我见过的用友软件U8生产制造(演示版),其中的邮件功能就是通过调用outLook的Active

狼之舞的专栏 1101

从零开始掌握Python机器学习:七步教程 基础篇

前言 「开始」往往是最难的,尤其是当选择太多的时候,一个人往往很难下定决定做出选择。本教程的目的是帮助几乎没有 Python 机器学习背景的新手成长为知识渊博的实践者,而且这个过程中仅需要使用免费的材料和资源即可。 第一步:基本 Python 技能 如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。 首先,你需要安装 Python。因为我们后...

hcgx2018的博客 1612

.NET Core 6.0发送邮件

.net core发送邮件

u011511086的专栏 3400

电磁炉线圈加热仿真全流程:用Ansys Maxwell分析涡流效应与热损耗

本文详细介绍了使用Ansys Maxwell进行电磁炉线圈加热仿真的全流程。通过构建2D轴对称涡流场模型,深入分析了高频下的涡流效应、趋肤效应与热损耗分布,为优化线圈设计、提升加热效率与均匀性提供了量化依据和实用指南。

sss66的博客 961

使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型

智能家居中的智能照明控制系统旨在通过自动化手段优化家庭照明,提高能源效率和居住舒适度。这通常涉及传感器(如光敏传感器、运动传感器)、控制器(如微控制器或PLC)以及执行器(如调光器或开关)。在这个教程中,我们将使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型。

xiaoheshang_123的博客 217

C#NET6基于MailKit 进行邮件发送通知

我们在项目中经常会有报警通知,业务通知用户的场景,通知的手段有短信、电话、群通知、邮件通知等。其中邮件通知是比较常见的场景,比如登录验证码,找回账户验证码,绑定邮箱,又或者是审批通知、会议通知等等。3.邮件任务执行服务,根据任务表中的数据进行任务执行,执行结束对任务状态进行标记,执行失败则进行延迟再次执行,直到执行重试次数结束 进行执行失败标记。执行结束进行日志记录。2.建立邮件任务表以及邮件日志表,当业务端有发邮件需求时,往邮件任务表中插入任务数据,记录标题、内容、收件人等信息。...

acheng 1825

形状记忆合金热机械本构模型的ABAQUS子程序实现与Fortran\_ABAQUS编程实践

本文详细介绍了如何使用ABAQUS子程序实现形状记忆合金的热机械本构模型,并通过Fortran_ABAQUS进行编程实践。我们首先介绍了问题的背景和目标,然后讲解了如何在Fortran_ABAQUS子程序中实现热变形模型、应力应变关系和相变模型,最后进行了ABAQUS模拟,并分析了模拟结果。希望通过本文的讲解,能让大家更深入理解ABAQUS子程序以及Fortran的使用,也希望能对大家在进行相关学习或研究工作时提供一些帮助。

qq_38334677的博客 1327

.net6发送邮件

发送邮件demo

weixin_42401291的博客 3181

perl 安装DBI和DBD

还可以从cpan.perl.org站点下载tar压缩文件形式的源代码发行版本,解压缩后,切换到相应的文件目录 cd DBI-1.54 perl Makefile.PL make make test make install 安装DBD时候 需要export ORACLE_HOME 验证安装: perldoc DBD::Oracle perldoc DBI 在线文档; perldoc -m

zhaoyangjian724的专栏 1754

uniapp - 详解APP端免费人脸识别+人脸核身+人脸对比+活体检测插件功能完整源码,uniAPP纯前端实现不依赖后端API接口或第三方付费人脸识别功能示例(仅兼容安卓app与苹果ios App)

uniapp免费人脸认证功能,uniapp APP开发活体人脸识别,UniApp人脸识别与活体检测,人脸核身uni-app插件 活体检测 人脸对比 人脸识别 人脸认证 身份证件,uni-app人脸核身,如何在app端实现免费人脸识别教程,人脸核身uni-app插件活体检测,uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件,详细实现人脸识别和活体检测功能,实时监测人脸是否进入区域及动作是否正确播报,提供提供实名认证、身份证识别、有没有免费的,api,活体检测,人脸信息采集、刷脸扫脸认证示例

🏆 前端领域优质创作者 4382

ASP.NET WebApi E-Mail服务(.NET 6.0+EntityFrameworkCore 6)

文章目录目标创建WebApi一.创建数据库1.数据表构成2.SQL脚本二.链接EFCore并进行依赖注入三.代码解释1.重写控制器基类2.创建控制器3.返回值Models类4.Config(1).Config.cs(2).Config的模型类(3).platform.json5.外部WebApi的调用(1).ExternWebApiBase.cs(2).Address类6.MailPlatform(1).MailBuilder(2).MailPlatform7.全局引用(NET6.0)三.需要导入的包EMa

qq_39935495的博客 4484

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

1、 使用outLook提供的发送如:我见过的用友软件U8生产制造(演示版),其中的邮件功能就是通过调用outLook的ActiveX 组件优点:开发简单缺点:依赖outlook组件,SMTP 邮件服务 邮件发送的代码如下:    Private Sub Send()        Dim outObj As New Outlook.Application()   

飘逸软件技术信息服务网 1087

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 如何安装Jmail
下一篇: C# 利用Jmail接收邮件(属性说明)
marklr
博客等级 码龄19年 52粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值