ASP.NET 2.0 接收邮件

asp.net mvc 发送邮件功能 asp.net mvc 发送邮件功能,配置里面主要配置发送人邮件的的信息,注意:邮箱必须要开通smtp服务,否则是无法使用该功能的 阅读详情

译文去掉了些非技术重点内容,原文地址

介绍

.NET framework 2.0 已经修补了对于通过改良的SMTP类实现发送邮件,但是接收邮件依然没有解决。(在CodeProject上有POP3的各类文章,但是都有一些缺点,类似有些代码没有托管,使用组件,及其有限的功能以及错误报告,没有跟踪服务器命令以及响应,不支持SSL安全套接字层,不支持XML文档,等等。)

这个项目是在以前的项目上建立的,但是完全使用C#2.0。下面首先会看一下从POP3服务器下载未处理的邮件的文章。已经有方法进行连接到POP3服务器,得到现有邮件的列表,请求邮件,删除邮件以及断开链接。为了方便调试以及更专业的使用,提供了扩张错误报告和交互跟踪。之后的文章会将会根据MIME协议将接收合法的邮件分解为内容,附件视图和附件。

我使用Gmail来测试。。。(我用163来测试哦^_^)

 

背景

使用POP3 服务进行交互

通过POP3服务器下载邮件是较为合理和快速的方法。与POP3服务器的交互仅使用一些指令并且方便人们阅读。要建立合法的安全的链接,客户端需要提供用户名以及密码进入POhttp://download1.csdn.net/down3/20070605/05215722221.zipP3事务处理状态,在Pop3MailClient(源码中的类)中称为‘connected’。

在‘connected’状态下,客户端可以执行一下命令:

  • STAT: GetMailboxStats(), 邮件数目和邮箱 number of mails and size of mailbox
  • LIST: GetEmailIdList(), 一个基于话邮件数目和所有邮件大小的列表 a list with session message numbers and size for all emails
  • LIST [msg]: GetEmailSize(), 一封邮件的大小 session message number and size for just one email
  • UIDL: GetUniqueEmailIdList(), 一个具有所有邮件的唯一id号和消息数 a list with unique ID numbers and session message numbers for all emails
  • NOOP: NOOP(), 不操作,只检查服务是否还有效 No operation, just check if server is still alive
  • RETR msg: GetRawEmail(), 得到一封完成的邮件 Retrieve one complete email
  • DELE msg: DeleteEmail(), 给邮件标注为删除Mark one email for deletion once the connection is properly closed.
  • RSET: UndeleteAllEmails(), POP3服务器将为标记的邮件标记为删除 POP3 server deletes umarks the emails marked for deletion
  • QUIT: Disconnect(), 删除需要删除的邮件以及关闭链接 POP3 server deletes emails as needed and closes TCP connection

为了更好的理解,推荐阅读官方的POP3规范, RFC1939 from IETF: Post Office Protocol - Version 3.

错误处理以及跟踪

大量的情况可以使两台通过互联网通信的计算机出现错误。因此,一个稳固的错误报告和通信跟踪是是否必要的。有一些问题,例如服务器没有响应,是致命的并且会抛出一个异常。异常后,通常这个链接就失效了需要被重新建立。 如果这个错误能被POP3客户端代码检测到,一个Pop3Exception(继承自ApplicationException)将会被抛出, 否则将是正常的 .NET 异常。还有一些问题,例如尝试得到一封不存在的邮件,只触发一个警告事件。它取决于用户的POP3客户端代码来决定是否抛出异常还是在日志文件中写一个警告或者……警告之后,POP3服务器将继续接收下一个指令。  

为了更好的调查通信问题,建立了事件跟踪。它展示了POP客户端和服务器端的指令交映,包括了警告。强烈推荐在项目初期使用这个特性,因为RFC1939(规范)给了服务器很大的执行自由度。它们经常提供在跟踪中可见的附加信息。

 

使用代码

服务器设置

我假定服务器的设置类似IP地址等,不会在一次会话中改变。Pop3MailClient类实体的构造函数需要服务器名,端口号,是否需要使用SSL,用户名,密码并且它们不能被更改,如果你想链接一个不同的服务器或者一个不同的用户,需要新建一个Pop3MailClient的实体对象。 

为了是代码运行,你需要输入你自己的用户名、密码。例如:

// TODO: Replace username and password with your own
            credentials.
Pop3.Pop3MailClient DemoClient = 
  new Pop3.Pop3MailClient(
    "pop.163.com", 110, false, "Username@163.com", "password");

如果你不使用163,当然你需要更改你的服务器名,端口号,用户名密码,设置将useSSL 设为“false”。 

读取原始邮件

方法GetRawEmail范围特定邮件号的完整内容。RFC1939规格,只能使用 ANSI 字符因此 邮件能被简单的显示出来。当然由于一些特殊的字符或者一些编码会使其看起来比较可笑。解码将会是我下一篇关于我的Pop3MimeClient类的文章的一部分。

超时自动重新链接

有时候邮件服务器会断线,链接失效。如果属性isAutoReconnect设置了“ture”,POP3邮件客户端一旦链接超时就会立即尝试链接。这是常有的事情,但是记住这时被标记为删除的邮件不会在服务器上被删除。,

有趣的地方

效率

不翻译了,困了,诶感觉都是对类的解释和描述,下面放出源码(附件吧)大家看看吧,有空在整理源码。

My guess is that the garbage collector spends a considerable amount of time with collecting memory. Receiving email is a lot of text processing and the idea of all these strings created and discarded gives me a creepy feeling. I hear you saying, use Stringbuilders, but they can be even slower than strings if only few operations are executed with them. Isn't it time for some reycling, i.e. reusing the same global StringBuilder for every email received ? I was careful not to indroduce any concurrency problems. But even the Framework itself is not reentrant ! If the repeated use of StringBuffers troubles you, just make them local.

源码下载

 

ZSEmail 邮件发系统的ASP.NET MVC与.NET框架实现 本文还有配套的精品资源,点击获取 简介:ZSEmail是一款使用ASP.NET MVC和.NET框架开发的邮件管理平台,集成了件箱、发件箱、草稿箱等核心功能,为用户提供便捷和安全的电子邮件处理体验。系统采用MVC设计模式和.NET框架的优势,实现了邮件的高效发,并具备稳定安全的网络通信、身份验证和授权机制。此外,ZSEmail可能利用了SMTP、POP3和IMAP4协议... 阅读详情

相关推荐

asp.net邮件接收

实现asp.net邮件接收源码 11111111111111111111111111

关于.NET邮件发问题总结(带附件)

<!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Desc

2619

Asp.net邮件系统(在线发)源码

Asp.net邮件系统(在线发)源码! 值得下载看看!资源免费,大家分享!! 更多免费资源 http://ynsky.download.csdn.net/

如何在.NET环境下实现邮件

=================================================一、NET环境下几种不同的邮件发送解决方案1、 WEB开发,在ASP.NET中引用System.Web.Mail类邮件消息是通过内置在 Microsoft Windows 2000 中的 SMTP 邮件服务或任意的 SMTP 服务器来传送的。System.Web.Mail 命名空间中生成的

zmaini1420的专栏 1530

asp.net 2.0发送和接收邮件总结

总结:.asp.net 2.0发送邮件非常的方便,只需要用using System.Net.Mail命名空间下的类就可以完成发送邮件的功能,发送邮件服务器可以有以下几种情况:1.本地的smtp服务器2.网络上的smtp服务器(smtp.163.com等)以下是我测试发送邮件的范例,基本上都考虑到的所有的情况,如果还有什么没有考虑到的请给我留言,我接续完善其功能.1.新建一网站名字叫Sent

lee576的专栏 1815

.Net 利用 Pop3 Client 接收邮件 [译]

.NET 2.0 开始, .NET 自带的 SmtpClient 已经非常完美了, 关于发送邮件的情况,我已经写过几篇BLOG了, 就不再多说了。 但遗憾的是,.Net没有提供 POP3 的支持,有点不咋地,嘿嘿 看到,很多朋友问到这方面的需求,我就找了个开源的(自己水平有限,搞不出来,哈哈),做了本地测试和部分汉化,提供大家共享,希望能help到一些朋友。   另: 发送邮件的相关链接如...

真有意思 439

asp 邮件(完整版)

   ///         /// 取普通邮件,把邮件存放到相应的数据库        ///         ///         ///         public string EmailRes(bool isAsync)        {            jmail.POP3Class pop3 = new jmail.POP3Class();            Mail

xuelong3489的专栏 1116

ASP.NET 2.0 中 Web 事件

ASP.NET 2.0 还提供了全功能的应用程序监视和健康监视。这个系统是由一个完全可扩展事件模型和一个能将事件发送到多种接收器的事件引擎组成的。举例来说,您可以配置您的 ASP.NET 应用程序来每天发送电子邮件,表明服务器正在运行并且包括可用内存的数量。同样,您可以创建一个链接到未处理异常的健康事件。异常内容、请求标题以及时间和日期都可以被发送到一...

weixin_33774883的博客 157

呼之欲出 WebMail 开发手记 (一) 基本功能

基本功能:邮件自动接收发送(多线程)支持多文件夹(件箱、发送箱、垃圾箱等)支持多用户支持多邮箱设置(163,yahoo,21cn,sohu,gmail等)实现:AJAXSQL 2005ASP.NET 2.0 (C#) ...

cuibinmo3519的博客 107

ASP.NET 2.0发送电子邮件

 在新发行的ASP.NET 2.0版本中,微软不再建议使用System.Web.Mail命名空间而代之以新的System.Net.Mail命名空间。在这个新库中引入了许多新特征,但是在发送邮件的方式方面也相应地带入了一些小错误。  一、 发送邮件  在详细讨论这些小错误之前,让我们先看一段示例代码(我们假定你已经在文件开始添加了"using System.Net.Mail"):

yjmtv0817的专栏 9942

ASP.NET 2.0中发送电子邮件剖析之一

一、简介  如今,电子邮件已经成为一种无所不在、异步通知和分布式的消息系统。存在许多web开发场所;其中,服务器端代码都需要生成一个电子邮件并且把它发送给指定的接收者。该电子邮件可以被发送给网点中的一些用户,通知他们有关于他们的新建用户帐户,提醒他们忘记的口令,或以邮件形式提交给他们一个清单。当然,这也可以是针对web开发者或站点管理员,提供给他们有关一个刚刚公开的未处理的异常或用户回馈...

anku0825的博客 617

ASP.NET的SMTP邮件服务编程总结

一.创建基于ASP.NET的SMTP邮件服务 Asp.net在System.Web.Mail名称空间中有一个发送email的内建类,但这仅是cdosys的一个假象。开发者能使用一个替代的它smtp邮件服务。在这篇文章里面,我将会展示如何创建一个用于asp.net的功能齐全的smtp邮件服务。    首先,我们创建一个继承命名空间System.Net.Sockets的TcpClient类的类。Tcp

水上漂的专栏 2628

ASP.NET 2.0中发送电子邮件剖析之二

一、简介<!--google_ad_client = "pub-6965424351286817";google_ad_width = 336;google_ad_height = 280;google_ad_format = "336x280_as";google_ad_channel ="7378659524";google_color_border = "FF

-云在青天水在瓶 3268

ASP.NET 2.0发送电子邮件全面剖析之二

一、简介  在上篇中我们详细分析过,.NET框架2.0版本提供了一个新的命名空间(System.Net.Mail)和一些发送电子邮件的新类(注意:.NET框架1.x版本中提供的命名空间System.Web.Mail及相关的类仍然可以使用,以实现向后兼容性)。而且,我们还详细分析过如何使用System.Net.Mail命名空间中的MailMessage和SmtpClient类来发送简单的普...

anku0825的博客 304
上一篇: ASP.NET Page指令的一些常用属性
下一篇: 使用ASP.NET跟踪Web应用程序
Lucifer-He
博客等级 码龄20年 10粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值