邮件发送类文件,可直接使用;

调用方法(实例化、静态调用):

实例化:

string exception = "";

SendEmail.SendEmail SE = new SendEmail.SendEmail("aaa@163.com", "aaa", "smtp.163.com", "管理员");

SE.SendMails("aaa<aaa@qq.com>;aaa<aaa@hotmail.com>;", "你好", "您好!", new string[] { }, out exception);

静态使用

SendEmail.SendEmail.Sends("aaa@163.com", "aaa", "aaa", TextBox1.Text, TextBox2.Text, TextBox3.Text, "smtp.163.com", true, FilePaths, out exception);

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.Xml;
using System.Text.RegularExpressions; namespace SendEmail
{
public class SendEmail
{
/// <summary>
/// 发送者邮箱地址
/// </summary>
private static string fromMailAddress;
/// <summary>
/// 发送者邮箱密码
/// </summary>
private static string fromMailPwd;
/// <summary>
/// 发送者邮箱SMTP
/// </summary>
private static string fromMailSMTP;
/// <summary>
/// 发送者邮箱显示名称
/// </summary>
private static string fromDisplayName; /// <summary>
/// 构造基础参数
/// </summary>
/// <param name="frommailaddress">发送方邮箱地址</param>
/// <param name="frommailpwd">发送方邮箱密码</param>
/// <param name="frommailsmtp">发送方smtp地址</param>
/// <param name="fromdisplayname">发送者邮箱显示名称</param>
public SendEmail(string frommailaddress, string frommailpwd, string frommailsmtp, string fromdisplayname)
{
fromMailAddress = frommailaddress;
fromMailPwd = frommailpwd;
fromMailSMTP = frommailsmtp;
fromDisplayName = fromdisplayname;
} public SendEmail()
{
XmlDocument doc = new XmlDocument();
doc.Load(System.Web.HttpContext.Current.Server.MapPath("~/SystemConfig.xml"));
XmlNode ServerMail = doc.SelectSingleNode("/Condition/System/ServerMail");
XmlNode PwdMail = doc.SelectSingleNode("/Condition/System/PwdMail");
XmlNode SMTP = doc.SelectSingleNode("/Condition/System/SMTP");
XmlNode DisplayName = doc.SelectSingleNode("/Condition/System/DisplayName");
if (ServerMail != null && ServerMail.InnerText != "" && PwdMail != null && PwdMail.InnerText != "" && SMTP != null && SMTP.InnerText != "" && DisplayName != null && DisplayName.InnerText != "")
{
fromMailAddress = ServerMail.InnerText;
fromMailPwd =  Encoding.Default.GetString(Convert.FromBase64String(doc.SelectSingleNode("/Condition/System/PwdMail").InnerText));
fromMailSMTP = SMTP.InnerText;
fromDisplayName = DisplayName.InnerText;
}
} /// <summary>
/// 实例化后邮件发送
/// </summary>
/// <param name="ToEmails">接收邮件地址,lzy <lo_yung@163.com>;</param>
/// <param name="eSubject">邮件标题</param>
/// <param name="eBody">邮件内容</param>
/// <param name="FileNames">邮件附件,无附件为null</param>
/// <param name="exception">未发送成功异常消息</param>
/// <returns>是否发送成功</returns>
public bool SendMails(string ToEmails, string eSubject, string eBody, string[] FileNames, out string exception)
{
bool Result = false;
//实例化发送内容对象
MailMessage oMail = new MailMessage();//创建一个MailMessage对象
try
{
MailAddress from = new MailAddress(fromMailAddress, fromDisplayName);//设置发送者信息
oMail.From = from;//设置发信人地址
oMail.Subject = eSubject;//邮件标题
oMail.Body = eBody; //邮件内容
oMail.IsBodyHtml = true; //指定邮件格式,支持HTML格式
oMail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");//邮件采用的编码,字符集,缺省为"US-ASCII"
oMail.Priority = MailPriority.High;//设置邮件的优先级为高
oMail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;//发送结果通知
if (FileNames.Length > )
{
foreach (string filepath in FileNames)
oMail.Attachments.Add(new Attachment(filepath));//邮件添加附件
} //实例化发送载体
SmtpClient client = new SmtpClient(); //实例化发送邮件SMTP服务器
client.Host = fromMailSMTP; //指定邮件服务器
client.UseDefaultCredentials = false;//凭据是否随请求一起发送,必须放在client.Credentials前
client.Credentials = new NetworkCredential(fromMailAddress, fromMailPwd);//指定服务器邮件,及密码
client.DeliveryMethod = SmtpDeliveryMethod.Network;//将邮件内容发送到SMTP服务器发出
//接收邮件格式化
if (ToEmails.Trim().IndexOf(";") != - && ToEmails.Trim().IndexOf("<") != - && ToEmails.Trim().IndexOf(">") != -)
{
string[] mailNames = ToEmails.Trim().Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string name in mailNames)
{
if (!string.IsNullOrEmpty(name))
{
string displayName = ""; string address = "";
//邮件格式loyung <lo_yung@163.com>;
if (name.IndexOf('<') > )
{
displayName = name.Substring(, name.IndexOf('<'));
address = name.Substring(name.IndexOf('<') + ).Replace('>', ' ');
}
oMail.To.Add(new MailAddress(address, displayName));
}
}
}
else
{
Regex reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$");
if (reg.IsMatch(ToEmails.Trim()))
{
oMail.To.Add(new MailAddress(ToEmails.Trim(), ToEmails.Trim().Substring(, ToEmails.Trim().IndexOf("@"))));
}
else
{
exception = "邮箱格式不正确";
Result = false;
}
}
client.Send(oMail); //发送邮件
exception = "发送成功!";
Result = true;
}
catch (Exception ex)
{
exception = ex.Message;
Result = false;
}
finally
{
oMail.Dispose(); //释放资源
}
return Result;
} /// <summary>
/// 静态方法,发送邮件
/// </summary>
/// <param name="FromEmailAddress">发送方邮箱地址</param>
/// <param name="FromDisplayName">发送方邮箱显示名称</param>
/// <param name="FromPWD">发送方邮箱密码</param>
/// <param name="ToEmails">接收邮件地址,lzy <lo_yung@163.com>;</param>
/// <param name="eSubject">邮件标题</param>
/// <param name="eBody">邮件内容</param>
/// <param name="SMTP">发送方smtp地址</param>
/// <param name="IsBodyHtml">邮件内容是否以html呈现</param>
/// <param name="FileNames">邮件附件,无附件为null</param>
/// <param name="exception">未发送成功异常消息</param>
/// <returns>是否发送成功</returns>
public static bool Sends(string FromEmailAddress, string FromDisplayName, string FromPWD, string ToEmails, string eSubject, string eBody, string SMTP, bool IsBodyHtml, string[] FileNames, out string exception)
{
bool Result = false;
//实例化发送内容对象
MailMessage oMail = new MailMessage();//创建一个MailMessage对象
try
{
MailAddress from = new MailAddress(FromEmailAddress, FromDisplayName);//设置发送者信息
oMail.From = from;//设置发信人地址
oMail.Subject = eSubject;//邮件标题
oMail.Body = eBody; //邮件内容
oMail.IsBodyHtml = true; //指定邮件格式,支持HTML格式
oMail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");//邮件采用的编码,字符集,缺省为"US-ASCII"
oMail.Priority = MailPriority.High;//设置邮件的优先级为高
oMail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;//发送结果通知
if (FileNames.Length > )
{
foreach (string filepath in FileNames)
oMail.Attachments.Add(new Attachment(filepath));//邮件添加附件
} //实例化发送载体
SmtpClient client = new SmtpClient(); //实例化发送邮件SMTP服务器
client.Host = SMTP; //指定邮件服务器
client.UseDefaultCredentials = false;//凭据是否随请求一起发送,必须放在client.Credentials前
client.Credentials = new NetworkCredential(FromEmailAddress, FromPWD);//指定服务器邮件,及密码
client.DeliveryMethod = SmtpDeliveryMethod.Network;//将邮件内容发送到SMTP服务器发出
//接收邮件格式化
if (ToEmails.Trim().IndexOf(";") != - && ToEmails.Trim().IndexOf("<") != - && ToEmails.Trim().IndexOf(">") != -)
{
string[] mailNames = ToEmails.Trim().Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string name in mailNames)
{
if (!string.IsNullOrEmpty(name))
{
string displayName = ""; string address = "";
//邮件格式loyung <lo_yung@163.com>;
if (name.IndexOf('<') > )
{
displayName = name.Substring(, name.IndexOf('<'));
address = name.Substring(name.IndexOf('<') + ).Replace('>', ' ');
}
oMail.To.Add(new MailAddress(address, displayName));
}
}
}
else
{
Regex reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$");
if (reg.IsMatch(ToEmails.Trim()))
{
oMail.To.Add(new MailAddress(ToEmails.Trim(), ToEmails.Trim().Substring(, ToEmails.Trim().IndexOf("@"))));
}
else
{
exception = "邮箱格式不正确";
Result = false;
}
}
client.Send(oMail); //发送邮件
exception = "发送成功!";
Result = true;
}
catch (Exception ex)
{
exception = ex.Message;
Result = false;
}
finally
{
oMail.Dispose(); //释放资源
}
return Result;
} }
}

.NET常用方法——邮件发送的更多相关文章

  1. 如何用python进行邮件发送

    使用Python调用邮件服务器发送邮件,使用的协议是SMTP(Simple Mail Transfer Protocol),下图为使用TCP/IP基于SMTP发送邮件的过程示意图: SMTP协议工作原 ...

  2. Javaweb-文件上传和邮件发送

    1.文件上传 新建空项目 准备工作 在maven仓库里下载commons io 和 commons fileupload两个jar包 实用类介绍 文件上传注意事项 为保证服务器安全,上传文件应该放在外 ...

  3. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  4. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  5. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

  6. SSH项目里面 忘记密码的邮件发送功能

    package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...

  7. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

  8. java spring 邮件发送

    开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...

  9. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

随机推荐

  1. Java-->多线程复制(文件指针)

    --> 这里用到两种方法...其实也不算两种,就一点点不一样而已... ---> Test 测试类 package com.dragon.java.multithreadcopy; imp ...

  2. OpenCV: Canny边缘检测算法原理及其VC实现详解(转载)

    原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 原文地址:http://blog.csdn.net/likezhaobin/ ...

  3. 2015GitWebRTC编译实录

    整体解决思路1 编译完成后2~3天,对之前编译的lib库进行测试.目前阶段至少保证真机测试是ok的,模拟器先放到一边.2015.06.24完成编译状况编译完成libjsoncpp编译完成libsyst ...

  4. POJ-2152 Fire (树形DP)

    题目大意:在一棵树中选出一些点,选每个点的代价为w(i),并且对于点 i ,在距离它lim(i)之内必须选一个点,使它作为 i 的依赖点.求最小代价. 题目分析:定义状态dp(u,k)表示使u为根节点 ...

  5. 【HAOI2009】【P1307】毛毛虫

    感觉相比其他树归题简单多了,不过有点绕(也许是我的思路很奇怪一.一)(这是省选题啊,就算作为T1这题也太水了,HA好弱……) 原题: 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一 ...

  6. java的nio之:java的nio系列教程之java的io和nio的区别

    当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景,以及它们如何影响您的代 ...

  7. Applied Deep Learning Resources

    Applied Deep Learning Resources A collection of research articles, blog posts, slides and code snipp ...

  8. lua操作常用函数学习一

    (1)lua 和 C++之间的交互的基本知识: lua 和 C++ 之间的数据交互通过堆栈进行,栈中的数据通过索引值进行定位,(栈就像是一个容器一样,放进去的东西都要有标号)其中栈顶是-1,栈底是1, ...

  9. InvokeRequired和Invoke

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用ne ...

  10. 联想笔记本如何关闭功能键,快捷键,如Fn+F1与F1切换

    在BIOS设置界面,进入 "Configuration" 菜单,查看是否有"Hotkey mode"选项,如果有的话,您由Enable更改为Disable,然后 ...