#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的更多相关文章

  1. 如何在网页中提取Email地址

    开博好久了,今天第一次发表技术文档,之前总是将一些好的事例保存在电脑,时间久了找起来也很麻烦,所以还是放在博客里进行归类比较方便,这样也能将自己在学习过程中的一些心得体会分享给大家,也能给需要的人一点 ...

  2. 系统中没有邮件客户端设置autoLink=email会挂掉的问题

    TextView的autoLink属性为我们提供了很大的便利性,当文本中有网址,邮箱或电话的时候可以让我们方便地执行打电话发邮件等动作,不过也有一些问题,比如说设置autoLink包含email属性, ...

  3. Email系列(QQ邮箱 + 含附件的邮箱案例 + 项目实战)

    平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html 邮箱系列:https://github.com/duniti ...

  4. 应用层之E-mail服务及javaMail邮件发送的知识总结

    关于Email服务你需要知道的知识点: 概述: 今天来介绍一下应用层的电子邮件服务,我们每天几乎都在用,电子邮件(email)服务也是一种基于C/S模式的服务,它采用的是一种"存储-转发&q ...

  5. 2.C#WinForm基础Email分析器

    功能:输入Email地址,输出用户名和域名 string[] String.split(params char[] separator)(+5重载)) 返回的字符串数组包含此实例的字符串(由指定Uni ...

  6. SSIS 实例——将SQL获取的信息传递到Email中

    最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...

  7. java发送 email

    public class EmailUtils implements IAction { private static Logger logger = Logger.getLogger(EmailUt ...

  8. 使用QQ邮箱发送email(Python)

    实际开发过程中使用到邮箱的概率很高,那么如何借助python使用qq邮箱发送邮件呢? 代码很简单,短短几行代码就可以实现这个功能. 使用到的模块有smtplib和email这个两个模块,关于这两个模块 ...

  9. 《精通正则表达式》笔记 --- “验证”Email格式

    写一个正则表达式的三个步骤: 理解需求并找出你需要验证的数据的特征: 写一个还可以用的正则表达式: 看看能不能达到你的目的,同时想想会不会匹配到一些不想要的数据: [可选]性能优化 我觉得写一个正则表 ...

  10. java对email邮箱的真实、有效性验证

    三种验证邮箱有效性的方式: 方式1: public static boolean checkEmail(String email) {     if (!email.matches("[\\ ...

随机推荐

  1. PHP易混淆函数的区分方法及意义

    1.echo和print的区别   PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此 ...

  2. iOS的UIDevice,NSBundle,NSLocale

    iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用 户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发api可以获取 ...

  3. android 生成.keystore文件

    cmd 进入jdk下的bin目录(我的目录:C:\Program Files\Java\jdk1.6.0_37\bin) keytool -genkey -alias xxx.keystore -ke ...

  4. 深入理解javascript中实现面向对象编程方法

    介绍Javascript中面向对象编程思想之前,需要对以下几个概念有了解: 1. 浅拷贝和深拷贝:程序在运行过程中使用的变量有在栈上的变量和在堆上的变量,在对象或者变量的赋值操作过程中,大多数情况先是 ...

  5. Java编程经验——Long等包装类型判断

    int等基本数据类型的值是可以通过=或者!=进行比较的,但是对于Long等包装类型想比较其和某个值是否相等是不能通过=或者!=来比较的,那究竟要怎么样进行比较呢? if (null != projec ...

  6. eclipse界面混乱

    在eclipse最右边点击Java----reset

  7. sql指定插入自增长id的数据

    SET IDENTITY_Insert [Tag.V2].[dbo].[Members_EnAccount] ON; insert into [Tag.V2].[dbo].[Members_EnAcc ...

  8. linux yum软件管理

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

  9. 一些对新手有用的css技巧

    一.表单部分 1.禁止textarea文本域的缩放 resize:none; 2.去除初始化textarea下拉条 overflow:auto; 3.如何让表单中的选项按钮,点击文字也能选中? < ...

  10. DBC表名说明

    http://www.afkwower.com/forum.php?mod=viewthread&tid=1277&extra=page%3D2由天堂大神提供Achievement.d ...