#region 邮件帮助类
//+-------------------------------------------------------------------+
//+ FileName: MailHelper.cs
//+ File Created: 2016-9-12
//+-------------------------------------------------------------------+
//+ Purpose: 邮件帮助类
//+-------------------------------------------------------------------+
//+-------------------------------------------------------------------+
//+ UpdateHistory: 修改的内容
//+-------------------------------------------------------------------+
/// <summary>
/// 邮件帮助类
/// </summary>
public static class SendMailHelper
{
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="request">邮件内容对象</param>
/// <returns>发送邮件所遇到的异常</returns>
public static string SendMail(MailRequest request)
{
try
{
MailMessage mail = new MailMessage(); if (string.IsNullOrEmpty(request.From))
{
request.From = WebConfigurationManager.AppSettings["DefaultMailFrom"];
}
mail.From = new MailAddress(request.From); PaserMailAddress(request.To, mail.To);
PaserMailAddress(request.CC, mail.CC);
PaserMailAddress(request.Bcc, mail.Bcc); mail.Subject = request.Subject;
mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.Body = request.Body;
mail.ReplyTo = new MailAddress(request.From);
mail.IsBodyHtml = true; if (request.Attachments != null && request.Attachments.Length > 0)
{
for (int i = 0; i < request.Attachments.Length; i++)
{
Attachment mailAttach = new Attachment(ByteArrayToStream(request.Attachments[i].FileData), request.Attachments[i].FileName); mail.Attachments.Add(mailAttach);
}
} if (string.IsNullOrEmpty(WebConfigurationManager.AppSettings["SMTPSERVER"]))
{
throw new ApplicationException("邮件服务无效");
} //Smtp Server
SmtpClient mailClient = new SmtpClient(WebConfigurationManager.AppSettings["SMTPSERVER"]); if (!string.IsNullOrEmpty(WebConfigurationManager.AppSettings["SMTPSERVERPORT"]))
{
//端口号
try
{
mailClient.Port = Int32.Parse(WebConfigurationManager.AppSettings["SMTPSERVERPORT"]);
}
catch
{
return "SMTP服务器端口设置错误,端口必须设置为数值型";
}
} if (!string.IsNullOrEmpty(WebConfigurationManager.AppSettings["MAILUSER"]))
{
mailClient.Credentials = new System.Net.NetworkCredential(WebConfigurationManager.AppSettings["MAILUSER"], WebConfigurationManager.AppSettings["MAILUSERPW"]);
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
}
else
{
mailClient.Credentials = CredentialCache.DefaultNetworkCredentials;
} mailClient.Send(mail);
mail.Dispose(); return string.Empty;
}
catch (SmtpFailedRecipientsException e)
{
Logger.Write("无法发送邮件到所有邮件地址");
Logger.Write(e); return e.Message;
}
catch (SmtpFailedRecipientException e)
{
Logger.Write("无法发送邮件到个别邮件地址");
Logger.Write(e); return e.Message;
}
catch (SmtpException e)
{
Logger.Write("发送邮件时的Smtp异常");
Logger.Write(e); return e.Message;
}
catch (Exception e)
{
Logger.Write("发送邮件时的异常");
Logger.Write(e); return e.Message;
}
} /// <summary>
/// 解析分解邮件地址
/// </summary>
/// <param name="mailAddress">邮件地址</param>
/// <param name="mailCollection">邮件对象</param>
private static void PaserMailAddress(string mailAddress, MailAddressCollection mailCollection)
{
if (string.IsNullOrEmpty(mailAddress))
{
return;
} char[] separator = new char[2] { ',', ';' };
string[] addressArray = mailAddress.Split(separator); foreach (string address in addressArray)
{
if (address.Trim() == string.Empty)
{
continue;
} mailCollection.Add(new MailAddress(address));
}
} /// <summary>
/// 字节数组转换为流
/// </summary>
/// <param name="byteArray">字节数组</param>
/// <returns>Stream</returns>
private static Stream ByteArrayToStream(byte[] byteArray)
{
MemoryStream mstream = new MemoryStream(byteArray); return mstream;
}
}
#endregion
需要引入命名空间
using System;
using System.Reflection;
using System.Net.Mail;
using System.Web.Configuration;
using System.Net;
using System.IO;
其中 帮助类中的服务器地址 和 账号 密码需要在配置文件中配置
<add key="SMTPSERVER" value="邮件服务器"/>
<add key="MAILUSER" value="账号"/>
<add key="MAILUSERPW" value="密码"/>
email的更多相关文章
- 如何在网页中提取Email地址
开博好久了,今天第一次发表技术文档,之前总是将一些好的事例保存在电脑,时间久了找起来也很麻烦,所以还是放在博客里进行归类比较方便,这样也能将自己在学习过程中的一些心得体会分享给大家,也能给需要的人一点 ...
- 系统中没有邮件客户端设置autoLink=email会挂掉的问题
TextView的autoLink属性为我们提供了很大的便利性,当文本中有网址,邮箱或电话的时候可以让我们方便地执行打电话发邮件等动作,不过也有一些问题,比如说设置autoLink包含email属性, ...
- Email系列(QQ邮箱 + 含附件的邮箱案例 + 项目实战)
平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html 邮箱系列:https://github.com/duniti ...
- 应用层之E-mail服务及javaMail邮件发送的知识总结
关于Email服务你需要知道的知识点: 概述: 今天来介绍一下应用层的电子邮件服务,我们每天几乎都在用,电子邮件(email)服务也是一种基于C/S模式的服务,它采用的是一种"存储-转发&q ...
- 2.C#WinForm基础Email分析器
功能:输入Email地址,输出用户名和域名 string[] String.split(params char[] separator)(+5重载)) 返回的字符串数组包含此实例的字符串(由指定Uni ...
- SSIS 实例——将SQL获取的信息传递到Email中
最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...
- java发送 email
public class EmailUtils implements IAction { private static Logger logger = Logger.getLogger(EmailUt ...
- 使用QQ邮箱发送email(Python)
实际开发过程中使用到邮箱的概率很高,那么如何借助python使用qq邮箱发送邮件呢? 代码很简单,短短几行代码就可以实现这个功能. 使用到的模块有smtplib和email这个两个模块,关于这两个模块 ...
- 《精通正则表达式》笔记 --- “验证”Email格式
写一个正则表达式的三个步骤: 理解需求并找出你需要验证的数据的特征: 写一个还可以用的正则表达式: 看看能不能达到你的目的,同时想想会不会匹配到一些不想要的数据: [可选]性能优化 我觉得写一个正则表 ...
- java对email邮箱的真实、有效性验证
三种验证邮箱有效性的方式: 方式1: public static boolean checkEmail(String email) { if (!email.matches("[\\ ...
随机推荐
- iOS8: Ignore manifest download, already have bundleID
在企业分发的app下载过程中,iOS8发现挂在官网上的企业版的app点击了提示是否安装应用程序,但始终安装不上程序,的device console发现安装的时候出现 LoadExternalDownl ...
- MVC+MQ+WinServices+Lucene.Net Demo
前言: 我之前没有接触过Lucene.Net相关的知识,最近在园子里看到很多大神在分享这块的内容,深受启发.秉着“实践出真知”的精神,再结合公司项目的实际情况,有了写一个Demo的想法,算是对自己能力 ...
- 使用 itext、flying-saucer 实现html转PDF(转)
转自 http://blog.csdn.net/mhouwei62/article/details/51394804 表示感谢 itext-2.1.7高于此版本已经更新为AGPL授权,不建议使用. 添 ...
- Html中代码换行造成空格间距的问题
Html中代码换行造成空格间距的问题解析 解决方法: 一.简单粗爆不换行 写代码的时候不要换行,input等在一行输写,那么将解决该问题.但是代码就变得不再那么容易好看. 二.设置父级块的字体大小为0 ...
- Python 基礎 - 文件的操作
在來我們來玩一下文件操作,這個在未來工作上,也是會很常用到的功能 Python2.7中,可以用file()來打開文件,而在Python3中,一律都是用open(),接下來在當前目錄下,先建立一個空文件 ...
- 小夜灯V2.0成本
物料清单: Arduino Nano *1 17.98 HC-05主从机一体蓝牙模块 *1 15.9 RGB灯珠1W大功率带铝基板 *1 3.3 奶白灯罩 *1 32.5 锐澳9cm发光底座 *1 ...
- Oracle 常用修改字段SQL语句
1. 更新字段名称 alter table table_name rename column column_old to column_new; 2. 添加字段 ); 3. 删除字段 alter ta ...
- web发布 将各个文件夹输出合并到其自己的程序集 注意事项
今天在发布web网站的时候 使用了“将各个文件夹输出合并到其自己的程序集”的选项,如图: 开始在 程序集前缀(可选)处,没有填写内容. 发布到IIS后出现未加载到程序集xxxx的错误. 经过各种调试, ...
- 1.Counting DNA Nucleotides
Problem A string is simply an ordered collection of symbols selected from some alphabet and formed i ...
- sql中not exists的用法
例子:查询物料表(tbl_material)中存在,配件主数据表(tbl_part_base_info)中不存在的配件编号: select m.part_no from tbl_material m ...