C# 邮件服务总结

在企业级应用中,用户经常需要掌握当前业务流转的状态。为满足该业务需求,通常的解决方案是,在业务流程的关键节点处设置系统提醒服务,如:手机短信提醒和邮件提醒等。大型企业一般都会在企业内部部署企业级的邮件服务器,所以邮件提醒服务较手机短信提醒会更加经济和安全。本文将总结,在企业级业务系统中,如何使用.Net的邮件服务接口,实现邮件提醒功能。

1. 设置配置文件(Web.config/App.config)

.Net提供在系统的配置文件中统一设置交互方法和发送人等信息的接口。配置之后,当使用SmtpClient发送邮件时,系统默认使用配置文件中的设置。下面是样例代码。需要注意的是,在企业内部发送邮件时,有时即使不配置userName和password也可以发送邮件(依赖于企业内部邮件服务器的配置)。但是,当需要往外发送邮件时,必须配置有效的userName和password.


<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="[email protected]">
<network host="Smtp server address" port="25" userName="username" password="password">
</smtp>
</mailSettings>
</system.net>

2. 发送邮件的步骤

在.Net
Framework中有两个和邮件服务相关的命名空间System.Net.Mail和System.Web.Mail,
其中后者已被废弃,所以,确保用的是System.Net.Mail内的类库。发送邮件一般分2步:

a. 创建MailMessage实例


var msg = new MailMessage();
//msg.From 默认使用配置文件中的设置
msg.To.Add(new MailAddress("[email protected]", "李明"));
msg.CC.Add(new MailAddress("[email protected]", "张三"));
msg.Bcc.Add(new MailAddress("[email protected]", "李四"));
msg.Subject = "subjectt";//邮件标题
msg.SubjectEncoding = Encoding.UTF8;//邮件标题编码
msg.Body = "content";//邮件内容
msg.IsBodyHtml = true;//是否是HTML邮件

b. 创建SmtpClient实例


var client = new SmtpClient(); //默认使用配置文件中的设置

//同步发送
try
{
client.Send(msg);
}
catch (SmtpException ex)
{
//exception handle
}

//异步发送
object userState = msg;
try
{
//发送完成后的处理逻辑可以在Callback函数中完成
client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
client.SendAsync(msg, out userState);
}
catch (SmtpException ex)
{
//exception handle
}

3. 邮件相关的业务逻辑

在业务系统中,邮件正文的内容往往不是那么容易直接获取的,针对不同的用户和业务流程,邮件的模板和填充模板的内容都会有不同。所以,为了高效稳定的生成邮件正文,往往会使用模板引擎来实现邮件正文的自动生成,如:NVelocity。在此,我们不展开讨论模板引擎的使用。

除邮件正文的生成以外,往往用户还会要求对系统发出去的邮件保存历史记录,尤其是往外发送给客户的关键邮件。在实践中,我的做法是将MailMessage的各字段调用ToString方法后保存在数据库MailLog的表中。值得一提的是,MailMessage.To/CC/Bcc方法,ToString后的格式是一致的,并且可逆。看如下代码:


var msg = new MailMessage();
msg.To.Add(new MailAddress("[email protected]", "李明"));
msg.To.Add(new MailAddress("[email protected]", "张三"));
var tolist = msg.To.ToString();
//tolist is "李明"<[email protected]>;"张三"<[email protected]>

//当发送失败,需要重新发送的时候,基于MailLog可以很方便的实现
msg.To.Clear();
msg.To.Add(tolist);
//msg.To恢复到上面的设置

【引用】http://www.cnblogs.com/zhouwei0213/archive/2013/06/12/3133023.html

时间: 2024-07-30 04:47:35

C# 邮件服务总结的相关文章

邮件服务

邮件语言:M4 SASL: v2 cyrus-sasl 认证框架 courier-authlib MTA: 邮件传输代理,SMTP服务器 sendmail,  UUCP qmail 数学家当程序员,他写的算法绝对是一流的 postfix 安全.兼容.效率高 exim Exchange (异步消息协作平台) 重量级 MDA: 邮件投递代理 procmail maildrop MRA: 邮件检索代理(pop3, imap4) cyrus-imap dovecot MUA: 邮件用户代理 Outloo

电商邮件服务平台性能优化谈

从今年一月份开始,团队陆续完成了邮件服务的架构升级.新平台上线运行的过程中也发生了一系列的性能问题,即使很多看起来微不足道的点也会让整个系统运行得不是那么平稳,今天就将这段时间的问题以及解决方案统一整理下,希望能起到抛砖的作用,让读者在遇到类似问题的时候能多一个解决方案. 新平台上线后第一版架构如下: 这版架构上线后,我们遇到的第一个问题:数据库读写压力过大后影响整体服务稳定. 表现为: 1.数据库主库压力高,同时伴有大量的读,写操作. 2.远程服务接口性能不稳定,业务繁忙时数据库的插入操作延迟

使用mail.rc快速配置linux发邮件服务

1.系统环境. [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.8 (Final) [[email protected] ~]# uname -r 2.6.32-642.el6.x86_64 [[email protected] ~]# uname -m x86_64 2.通过修改配置文件/etc/mail.rc可以使用外部SMTP服务器,轻松实现linux发邮件功能. [[email protected] ~]#

【初学菜鸟作--邮件服务的简单配置案例】

邮件服务器的配置以及使用 实验一:                    实验目的:简单搭建出邮件服务器并测试其可用性                    实验环境:DNS服务器一台,安装有Portfix的邮件服务器一台 实验步骤: 一.邮件的发送(SMTP) 1.在邮件服务器配置主机名,ip,并安装portfix并启动 [[email protected]~]# tail -2 /etc/sysconfig/network HOSTNAME=mail.tarena.com   [[email

谢烟客---------Linux之邮件服务及任务计划执行

任务计划命令 mail,at,batch,crond,sleep 邮件服务工作模式: 发 代理-> stmp --> smtp --> 投递代理 --> 邮筒 --> pop3,imap4 <-- 代理 <-- 收 at,mail,batch,cron命令均建议用完整路径或在脚本中定义PATH 特点: mail -s '主题' [email protected] 发邮件 batch 根据负载选定命令执行时间 at HH:MM am|pm [YYYY-MM-DD]

邮件服务系列之五安装Extman,maildrop以及clamav-0.97.7的安装

前面我们已经完成了基础的邮件系统所需的组建的安装以及配置,下面我们进行Extman-1.1,maildrop以及clamav-0.97.7的安装以及配置,来完成整个邮件服务系统的搭建. 一.安装Extman-1.1 1.安装及基本配置 # tar zxvf  extman-1.1.tar.gz # mv extman-1.1 /var/www/extsuite/extman 修改配置文件以符合本例的需要: # cp /var/www/extsuite/extman/webman.cf.defau

邮件服务系列之三实现postfix+dovecot+sasl

MRA :cyrus-imap,dovecot dovecot 依赖MySQL客户端 pop3协议监听tcp110 imap4协议监听tcp143端口 以明文方式工作需结合sasl来实现邮件传输加密 dovecot支持四种协议: pop3 imap4 pop3s imaps 配置文件位于:/etc/dovecot.conf 带有sasl认证能力 支持两种邮箱格式: mbox一个文件存储所有邮件 maildir:一个文件存储一封邮件,所有邮件存储在一个目录中 安装: yum install dov

编译安装postfix邮件服务

一.安装前的准备 1.邮件服务基本知识: wget http://sourceforge.net/p SMTP:(Simple Mail Transfer Protocol)即简单邮件传输协议 POP3:邮局协议     IMAP4:internet mail access protocol 互联网邮件访问协议 SASL:simple Authentication Secure layer  简单安全认证层 (版本v1,v2目前主流v2版本) MDA:邮件投递代理(procmail,maildr

《Linux菜鸟入门2》空壳邮件服务

●空壳邮件 1.引入空壳邮件的意义 邮件服务器直接暴露在网络环境下安全性会大大降低,所以引入"空壳服务器"是为了保证真正服务器的安全,空壳服务器的功能就是将受到的邮件转发(双向的). 2.制作空壳邮件 在配置好DNS的前提下: 空壳服务器配置(maillinux.linux.com): vim /etc/named.rfc1912.zones cd /var/named/ cp -p westos.com.zone westos.org.zone vim westos.org.zone

Linux的postfix邮件服务

一.postfix邮件服务 postfix提供smtp协议用来投递邮件默认端口25/var/log/maillog    服务日志mail [email protected]Subject: hellohello world .                           用"."来结束录入内容并发送mailq                  查看邮件队列postqueue -f      重新处理邮件队列 默认情况下邮件端口只在127.0.0.1上开启 二.环境配置 1.设