`
zu14
  • 浏览: 459181 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

.NET C# 异步发送 要求回执 嵌入图片资源 自定义邮件头 失败通知 html/文本双视图 支持 notes 的邮件

阅读更多

原帖地址: http://www.zu14.cn/2008/12/02/net_sendmail2/

在前面的一篇 .NET 发邮件 文章里, 讲的是比较基础的方面,这次讲稍微高级的一点的内容

几个知识点:

  1. HTML格式邮件中,嵌入图片资源
  2. 要求收到后,发送回执给你
  3. 如果邮件发送失败, 发送错误通知邮件给你
  4. 支持 HTML/plain text 双格式的邮件, 收件端可以自行切换
  5. 自定义邮件头
  6. 异步发送, 支持取消发送
  7. 邮件回执, 支持 Lotus Notes 的 domino server
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = false;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Host = "smtp.163.com";
smtp.Credentials = new NetworkCredential("三角猫@163.com", "这是密码");

MailMessage mm = new MailMessage();
mm.From = new MailAddress("三角猫@163.com", "三角猫", Encoding.GetEncoding(936));
mm.To.Add("三角猫@gmail.com");

mm.SubjectEncoding = Encoding.GetEncoding(936);
mm.Subject = "三角猫发的测试邮件,呵呵";

mm.BodyEncoding = Encoding.GetEncoding(936);

////普通文本邮件内容,如果对方的收件客户端不支持HTML,这是必需的
string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容";
mm.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain"));

////HTML格式邮件的内容
string htmlBodyContent = "如果你的看到<b>这个</b>, 说明你是在以 <span style=\"color:red\">HTML</span> 格式查看邮件<br><br>";
htmlBodyContent += "<a href=\"http://www.zu14.cn/\">真有意思网</a> <img src=\"cid:weblogo\">";   //注意此处嵌入的图片资源
AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html");

////处理嵌入图片
LinkedResource lrImage = new LinkedResource(@"d:\blogo.gif", "image/gif");
lrImage.ContentId = "weblogo"; //此处的ContentId 对应 htmlBodyContent 内容中的 cid:  ,如果设置不正确,请不会显示图片
htmlBody.LinkedResources.Add(lrImage);

mm.AlternateViews.Add(htmlBody);

////要求回执的标志
mm.Headers.Add("Disposition-Notification-To", "接收回执的邮箱@163.com");

////自定义邮件头
mm.Headers.Add("X-Website", "http://www.zu14.cn/");

////针对 LOTUS DOMINO SERVER,插入回执头
mm.Headers.Add("ReturnReceipt", "1");

mm.Priority = MailPriority.Normal; //优先级
mm.ReplyTo = new MailAddress("回复邮件的接收地址@yahoo.com.cn", "我自己", Encoding.GetEncoding(936));

////如果发送失败,SMTP 服务器将发送 失败邮件告诉我
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

////异步发送完成时的处理事件
smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);

////开始异步发送
smtp.SendAsync(mm, null);
       void smtp_SendCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                MessageBox.Show("发送被取消");
            }
            else
            {
                if (e.Error == null)
                {
                    MessageBox.Show("发送成功");
                }
                else
                {
                    MessageBox.Show("发送失败: " + e.Error.Message);
                }
            }
        }

分享到:
评论

相关推荐

    C# Asp.Net 邮件异步发送

    本主题将深入探讨如何使用C#实现Asp.NET中的邮件异步发送,包括同步和异步两种方法,以及使用SMTP(Simple Mail Transfer Protocol)模式进行实际的邮件传输。 首先,我们需要了解SMTP。SMTP是一种Internet标准,...

    C#.net发送邮件完整源代码(DEMO完整版)

    在C#.NET编程环境中,发送电子邮件是一项常见的任务,尤其对于开发者来说,可能需要构建自动通知、用户注册验证或数据报告等功能。本资源提供了一个完整的C#.NET发送邮件的DEMO,适用于Visual Studio 2008,且包含了...

    ASP.NET MVC 发送邮件,支持多个邮箱格式。

    ### ASP.NET MVC 发送邮件支持多个邮箱格式的知识点解析 #### 一、ASP.NET MVC 发送邮件概述 在Web开发中,电子邮件功能是一项常见的需求,它可以帮助开发者实现诸如用户注册确认、密码重置通知等功能。ASP.NET ...

    asp.net(C#)发送电子邮件

    在这个场景中,我们关注的是使用ASP.NET和C#语言发送电子邮件的功能。这是一个常见的需求,例如用于注册确认、忘记密码重置或者客户服务通知。 C#是.NET Framework的主要编程语言,提供了丰富的库和API来处理各种...

    HTTP异步请求数据Demo(C#)

    在C#中,我们可以通过调用HttpClient的GetAsync方法实现异步GET请求。例如: ```csharp using System.Net.Http; ... HttpClient client = new HttpClient(); Task&lt;HttpResponseMessage&gt; responseTask = client....

    ASP.NET(C#)Web发送邮件简单源代码

    在这个场景中,我们关注的是如何在ASP.NET环境中利用C#语言来实现Web应用的邮件发送功能。邮件发送在现代Web应用中非常常见,比如用户注册验证、忘记密码重置、订阅通知等。 首先,我们需要了解SMTP(Simple Mail ...

    C# .net winform mail 发送邮件 源码

    在C# .NET环境下开发Windows桌面应用程序(Winform)时,发送邮件是一项常见的需求。标题中的"C# .net winform mail 发送邮件 源码"指的是一种使用C#编程语言,基于.NET Framework的Winform应用,实现邮件发送功能的...

    c#.NET2.0发送邮件Demo源代码

    ### C#.NET 2.0 发送邮件 Demo 源代码解析 #### 一、概述 在本篇文章中,我们将详细解析一个基于 .NET 2.0 的 `System.Net.Mail` 库发送邮件的示例代码。通过这个例子,我们可以学习如何在 C# 中配置邮件发送的...

    C#.NET邮箱发送内容含附件文件源码Demo

    这个C#.NET邮箱发送内容含附件文件源码Demo,是一个很好的学习和参考资源,对于需要在应用中实现邮件发送功能的开发者来说,具有很高的实用价值。通过研究和实践,你可以轻松地将邮件发送功能集成到自己的项目中。

    C#实现定时发送邮件功能

    在本示例中,我们关注的是如何利用C#实现一个定时发送邮件的功能。这个功能通常在需要定期向用户发送通知、报告或其他重要信息的场景下非常有用。我们将探讨以下几个关键知识点: 1. **System.Net.Mail**: 这是.NET...

    C#.NET 封装自定义组件(控件)Dll

    本主题将详细探讨如何使用C#.NET来封装自定义组件,并通过一个自定义数字文本框的实例进行说明。 首先,创建自定义控件的过程通常包括以下步骤: 1. **定义类**:在C#中,我们需要创建一个新的类,这个类将继承自...

    C#异步操作 异步查询数据库 异步处理一行一行加载数据

    在C#编程中,异步操作是现代应用开发的关键特性,尤其在处理大量数据或进行I/O密集型任务时,如查询数据库。本主题将深入探讨C#中的异步概念,如何异步查询数据库,以及如何异步处理一行一行加载的数据。 首先,...

    .NET代码生成器 C# 版(可自定义模板函,模板类,及视图实体)

    类似于李天平的,但那个太死了,这个可以自定义函数模板和类模板,及视图实体。 文档请发邮件找我索取。 还有这个完全免费,不需要任何注册。希望大家提意见,我及时改正。 (奉献源代码)由于控件问题,自己调整...

    c#UDP异步发送接收

    在编程领域,网络通信是不可或缺的一部分,而C#作为.NET框架的主要编程语言,提供了丰富的库来支持各种网络通信协议,包括UDP(用户数据报协议)。本文将深入探讨C#中如何实现UDP的异步发送和接收,这对于构建实时、...

    .NET代码生成器 C# 版 (可自定义模板函数和模板类,及视图实体)

    列出主要功能:  访问三种不同数据库 ... 类似于李天平的,但那个太死了,这个可以自定义函数模板和类模板,及视图实体。 文档请发邮件找我索取。 还有这个完全免费,不需要任何注册。希望大家提意见,我及时改正。

    .net 邮件群发C#源代码

    在实际的邮件群发中,为了提高效率和防止被邮件服务商视为垃圾邮件,我们可能需要使用线程或异步操作来发送邮件。同时,邮件列表通常存储在数据库或文件中,我们需要读取这些数据并循环发送邮件: ```csharp List...

    asp.net WebAPI OWIN OAuth2.0授权自定义返回结果及错误或异常问题处理办法

    asp.net WebAPI OWIN OAuth2.0授权自定义返回结果及错误或异常问题处理核心代码,详情: https://www.cnblogs.com/wgx0428/p/12315546.html

    webkit.net 0.5版,c#和winform嵌入chrome核心浏览器控件

    webkit.net 0.5版,c#和winform嵌入chrome核心浏览器控件 原来的sourceforge有时候连不上,特先下载好再上传上来,并带了一个说明,解决了在编译安后时会遇到的:failed to initialize activation context问题。

    vb.net代码转C#.net工具

    在开发过程中,有时由于团队偏好或项目需求,可能需要将VB.NET代码转换为C#代码,这就是“vb.net代码转C#.net工具”的作用。 该工具的主要功能在于帮助开发者自动化完成VB.NET到C#的源代码迁移。转换过程可能会涉及...

    asp.net邮件发送系统

    ASP.NET邮件发送系统是一种基于微软的ASP.NET框架构建的应用程序,用于实现自动化或手动的电子邮件发送功能。在C#编程语言的支持下,开发者可以利用丰富的类库和API来创建高效、可靠的邮件服务。该系统通常包含用户...

Global site tag (gtag.js) - Google Analytics