问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

跪求一个基于C#.net或者java编的邮件接收发送的系统,希望高手能帮帮忙

发布网友 发布时间:2022-05-31 23:50

我来回答

1个回答

热心网友 时间:2023-11-07 07:07

用Active Server
Pages(ASP)开发过网站的人都知道,如果想用ASP来开发一套电子邮件发送系统,要么使用第三方提供的组件,如Jmail等,要么使用Window自带的对象——C

DONTS.NewMail,而ASP中则没有类似的对象用来开发电子邮件发送系统。自从微软公司推出了Microsoft
.NET后,发送电子邮件已经成为Web程序设计的基本对象,只要用简单地引用.NET中发送邮件的类库就可以构建一个完整的E-mail电子邮局发送系统,而无须借助任何第三方组件。

一、相关准备

发送电子邮件所采用的是.Net FrameWork
SDK中的Class Library(类库)--System.Web.Mail。这个Class
library提供了E-mail发送的所有对象、属性和方法。其中最重要的是mailMessage类和smtpMail类,mailMessage类提供用于构造电子邮件的属性和方法,如发信人、收信人、抄送地址、密送地址、主题、正文、优先级、格式、附件等。smtpMail提供用于使用
Windows 的协作数据对象 (CDOSYS) 消息组件来发送消息的属性和方法,其中成员smtpServer用来获取或设置要用于发送所有电子邮件的 SMTP
邮件服务器的名称,成员send用来发送电子邮件。

如上所述,使用.NET开发基于Web的电子邮件发送系统,必须指定一个SMTP服务器。我们既可以指定Internet上任何一个SMTP服务器,也可以使用服务器自身的SMTP服务功能。如果使用本机来发送信件,首先必须启动SMTP服务,再进行中继*设置,以确保每个人都可以使用该服务发送邮件。打开控制面板中的Internet信息服务,右键点击『默认SMTP虚拟服务器』,选择『启动』菜单来启动SMTP服务,再选择『属性』菜单,在弹出的属性菜单中选择『访问选项』卡,点击『中继』按钮,打开中继*对话框,选中『仅以下列表除外』,确定即可。经过如此设置,任何人都可以用本机提供的SMTP服务发送电子邮件了。如图1。

如果要在信件中夹带附件,必须先将附件上传到服务器,因为附件加载命令Message.Attachments.Add()无法加载客户端的文件,只能将服务器端的文件添加到邮件中。邮件发送成功后,“还系统一个清白”,最好将附件从服务器删除。.NET
FrameWork 中也已经集成了文件上传和文件操作(写入、读出、移动、复制、删除等)功能,只须简单地调用即可实现。

现在现在我们来看看究竟什么样的E-mail发送系统才是一个功能完整的E-mail发送系统呢?具体说来,一个功能完整的E-mail发送系统应该具备了如下功能:发信人地址(From)、收信人地址(To)、密送地址(Bcc)、抄送地址(Cc)、主题(Subject)、正文(Body)、信件优先级(Priority)、信件格式(Format)、附件(Attachments)等。如图2。下文将详细阐述如何实现这些功能。

二、实现步骤

经过上文所述的准备工作,我们来具体看一下构建完整的E-mail发送系统的步骤。在此所涉及到的服务器端的控件名称请参见第四部分“完整的code
behind代码”。限于篇幅,aspx文件中控件定义代码未能提供。

1、定义mailMessage对象的实体。

Dim mailMessage As New
System.Web.Mail.MailMessage()

2、指定mailMessage对象的各个属性值。

发信人地址:mailMessage.From

收信人地址:mailMessage..To

抄送地址:mailMessage..Cc

密送地址:mailMessage..Bcc

主题:mailMessage..Subject

正文:mailMessage..Body

信件格式:mailMessage..BodyFormat

优先级:mailMessage..Priority

附件:mailMessage.Attachments

3、添加附件,共分三个步骤。

1)将文件上传到服务器。用PostedFile.SaveAs()获取对由客户端指定的上载文件的访问。本例将附件上传到当前目录的upload子目录中。

strFullFileName =
attachfile.PostedFile.FileName

intPosition =
InStrRev(strFullFileName, "", Len(strFullFileName))

strFileName =
Mid(strFullFileName, intPosition + 1)

attachfile.PostedFile.SaveAs(MapPath("upload") & "" &
strFileName)

2)将附件以绝对路径添加到邮件中。

mailMessage.Attachments.Add(New
Mail.MailAttachment(MapPath("upload") & "" & strFileName))

3)信件发送成功后,调用.NET中的文件操作类将文件从服务器中删除。

Dim fileDeleteObject As
System.IO.File

fileDeleteObject.Delete(MapPath("upload") & "" &
strFileName)

fileDeleteObject = Nothing

4、指定SmtpServer服务器,发送邮件。

Mail.SmtpMail.SmtpServer =
"LocalHost"

Mail.SmtpMail.Send(mailMessage)

三、完整的Code Behind代码

下面是完整的Code Behind代码,用VB编写。

Public Class contact_mail

Inherits System.Web.UI.Page

‘变量定义

Protected WithEvents txtboxFrom
As System.Web.UI.WebControls.TextBox ‘发信人地址文本框

Protected WithEvents txtboxTo As
System.Web.UI.WebControls.TextBox ‘收信人地址文本框

Protected WithEvents txtboxCc As
System.Web.UI.WebControls.TextBox ‘抄送地址文本框

Protected WithEvents txtboxBcc
As System.Web.UI.WebControls.TextBox ‘密送地址文本框

Protected WithEvents
txtboxSubject As System.Web.UI.WebControls.TextBox ‘主题文本框

Protected WithEvents txtboxBody
As System.Web.UI.WebControls.TextBox ‘正文文本框

Protected WithEvents
radiobtnFormat As System.Web.UI.WebControls.RadioButtonList ‘信件格式单选钮

Protected WithEvents
radiobtnPriority As System.Web.UI.WebControls.RadioButtonList ‘优先级单选钮

Protected WithEvents attachfile
As System.Web.UI.HtmlControls.HtmlInputFile ‘文件浏览按钮

Protected WithEvents btnSend As
System.Web.UI.WebControls.Button ‘定义发送按钮

Dim mailMessage As New
System.Web.Mail.MailMessage() ‘定义mailMessage对象的实体

Dim strFullFileName, strFileName
As String '定义上传文件名称

Dim intPosition As Integer

Private Sub
btnSend_onclick(ByVal sender As System.Object, ByVal e As EventArgs) Handles
btnSend.Click

'赋值予收件人/发件人/抄送/密送地址/主题/正文

‘收件人/抄送/密送支持以分号分隔的电子邮件地址列表

mailMessage.To = txtboxTo.Text

mailMessage.From =
txtboxFrom.Text

mailMessage.Cc = txtboxCc.Text

mailMessage.Bcc = txtboxBcc.Text

mailMessage.Subject =
txtboxSubject.Text

mailMessage.Body =
txtboxBody.Text

'取信件格式(文本/超文本)

If
radiobtnFormat.SelectedItem.Value = "text" Then

mailMessage.BodyFormat =
Mail.MailFormat.Text

Else

mailMessage.BodyFormat =
Mail.MailFormat.Html

End If

'取优先级(低/普通/高)

Select Case
radiobtnPriority.SelectedItem.Value

Case "low"

mailMessage.Priority =
Mail.MailPriority.Low

Case "normal"

mailMessage.Priority =
Mail.MailPriority.Normal

Case "high"

mailMessage.Priority =
Mail.MailPriority.High

End Select

'取附件步骤共3步,首先判断是否加载了附件

If
attachfile.PostedFile.FileName <> "" Then

'1、先将附件上传到当前目录的upload子目录下

strFullFileName =
attachfile.PostedFile.FileName ‘获得包括路径的完整文件名

intPosition =
InStrRev(strFullFileName, "", Len(strFullFileName))

strFileName =
Mid(strFullFileName, intPosition + 1) ‘获得文件名

attachfile.PostedFile.SaveAs(MapPath("upload") & "" &
strFileName) ‘以绝对路径上传文件

'2、以绝对路径添加附件

mailMessage.Attachments.Add(New
Mail.MailAttachment(MapPath("upload") & "" & strFileName))

End If

Mail.SmtpMail.SmtpServer = "
LocalHost " ‘指定本机为SMTP服务器

Mail.SmtpMail.Send(mailMessage)

If
attachfile.PostedFile.FileName <> "" Then

'3、信件发送完成之后删除这个文件

Dim fileDeleteObject As
System.IO.File

fileDeleteObject.Delete(MapPath("upload") & "" &
strFileName)

fileDeleteObject = Nothing

strFullFileName = Nothing :
strFileName = Nothing : intPosition = Nothing

End If

End Sub

End Class

四、讨论

到此为止,一个基于Web的完整的电子邮件发送系统就完成了。由于本例采用了代码分离(Code
Behind)技术,所以必须经过编译才能运行。

虽然使用Microsoft
.NET构建基于Web的电子邮件发送系统十分快捷方便,而且功能完整,但它并不是完美无缺的。它的最大缺陷就是该类库目前尚不支持SMTP认证,所以无法使用Internet上需要认证的SMTP服务器来发送信件。目前Internet上无须认证便能发信的SMTP服务器少之又少,就算有也不会很稳定,因此启用本机的SMTP功能才能确保服务稳定。但如果本机是直接连接到Internet上的,又会受到网上垃圾信件的攻击。笔者就有过这样的经历,打开了SMTP服务的服务器因受到垃圾信件的攻击很快就陷于瘫痪,无可奈何只有将服务关闭。

是不是这样我们就束手无策呢?俗话说魔高一尺,道高一丈。经过多次实践,笔者总结出一个能够实现双赢的方案:将服务器置于局域网内,利用防火墙避免网上垃圾信件的攻击。然后在DNS服务器中添加一条记录,将该服务器的IP地址(局域网内部地址)映射为Internet上的合法IP地址或域名,局域网内的信件发送可以直接连接到该服务器,局域网外的信件发送可以通过这个合法的IP地址解析到该服务器从而达到发送信件的目的。这样既有效地拦截了垃圾邮件,又实现了邮件发送的功能,可谓一举两得。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
齿瓣延胡索选方 延胡索粉是与开水服用还是与中药服用 延胡索细粉一次吃多少 青少年为什么会得抑郁症 为什么越来越多的青少年抑郁了? 游戏账号重新注册了一个,以前的老号为什么就没有了? 老爸做60大寿,要用手机发信息接朋友呷酒怎么说 老爸做60大寿,要用手机发信息接朋友呷酒怎么写 老爸60大寿请朋友来呷酒用短信通知发些什么 雷克萨斯es200和300的区别 雷克萨斯es200和300的区别哪个好 在线发送邮件,并可以发送附件 壁纸用什么东西粘在墙上 我姓冯,儿子是牛年农历四月十一日出生,帮忙起个好名字,谢谢/ 求姓冯男孩牛年生2009年阳历11月29日3点40生,名字前两字为冯继,请求高手取名。 小区物业管理系统、学生社团管理系统、在线邮件发送系统、在线考试系统、综合网站系统为题毕业论文如何写 约旦有落地签吗?有其他国家签证记录,但都已有出关记录且过期。没约旦签证在*可以出境?多谢指导! 请问约旦留学签证需要哪些材料 需要健康证和无犯罪记录证明吗? 在约旦办理埃及签证,是当天就拿到了吗 约旦旅游签证所需材料?去约旦旅游办理签证要些什么材料? 夏季干燥易缺水,该怎样给皮肤补水? 约旦签证的种类有哪些? 数控机床gs3000变频器Er9报警怎么解决 广数980tda使用说明书下载 广州数控车床GS980ta半径编程如何设置参数 广数系统的说明书哪里有下载啊 给网址 急急 广州数控GS3000报警 err-38 PPT文件不能修复或者说修复出来不能读 欧洲直升机的公司产品 国内有哪些直升机培训公司, 目前知名度最高的直升机厂牌是? 求无组件在线发送邮件系统 夏季应该怎样给皮肤补水? 电脑耳机插孔电压多少? 耳机孔所能提供的最大电压是多少 谁清楚电脑耳机插孔电压是多少 饮水机热水最高多少度 电脑耳机的输入电压是多少啊? SSL tomcat6 双向认证配置,并且证书是第三方权威机构的CA证书,是正大吉元的证书,这个SSL怎么配置啊? 第一贴:如何制作一个SSL网站要求用户用证书登录的 请问,创维电视质量怎么样? tcl和创维电视哪个好 创维电视市场部只要是做什么的 创维液晶电视好吗?3000块左右的液晶有什么比较好的? 传统电脑产生电磁辐射,对人体会造成伤害。现在有的生产厂商推出了绿色电脑,这里 “绿色电脑”指的是 自从那次下载了美图秀秀后里面有个啥相机功能点击之后不知怎么弄的。突然就内存不足。以前不是这样的。恢 有怎么查qq号 夏天煲汤放红枣会上火吗? 能不能通过找到qq号 煲汤枣可以直接吃吗? 知道怎么查qq号?