C#编写的邮件(Mail)发送发送人的信息从web.config或者从Appp.congfig中获取的方法
2013-10-27 18:40
561 查看
1.webform应用程序.
首先写一个邮件发送的方法
/// 使用SMTP发送邮件
/// </summary>
/// <param name="smtpHost">smtp服务器信息,格式:Host:Port,Port可省略,采用默认端口25</param>
/// <param name="attach">附件的地址</param>
/// <param name="UserName">smtp服务器登录用户名</param>
/// <param name="UserPass">smtp服务器登录密码</param>
/// <param name="MailName">发件人昵称</param>
/// <param name="MailFrom">发件人</param>
/// <param name="MailTo">收件人,多个可使用,分隔</param>
/// <param name="strTitle">邮件主题</param>
/// <param name="strBody">邮件内容</param>
/// <param name="isHTML">是否为HTML邮件</param>
/// <returns>发送状态</returns>
public static bool sendMail(string smtpHost, Attachment[] attach, string UserName, string UserPass, string MailName, string MailFrom, string MailTo, string strTitle, string strBody, bool isHTML)
{
System.Net.Mail.MailMessage objMsg = new System.Net.Mail.MailMessage();
objMsg.From = new System.Net.Mail.MailAddress(MailFrom, MailName);
objMsg.To.Add(MailTo);
objMsg.Subject = strTitle;
objMsg.IsBodyHtml = isHTML;
objMsg.BodyEncoding = System.Text.Encoding.UTF8;
objMsg.Body = strBody;
if (attach.Length > 0)
{
foreach (var item in attach)
{
objMsg.Attachments.Add(item);
}
}
string[] smtpHostArr = smtpHost.Split(':');
string smtpHostIPAdd = String.Copy(smtpHost);
int smtpHostPort = 25;
if (smtpHostArr.Length >= 2)
{
smtpHostIPAdd = toString(smtpHostArr[0].ToString());
smtpHostPort = toInt(smtpHostArr[1].ToString());
}
System.Net.Mail.SmtpClient objSMTP = new System.Net.Mail.SmtpClient();
objSMTP.Host = smtpHostIPAdd;
objSMTP.Port = smtpHostPort;
objSMTP.Credentials = new System.Net.NetworkCredential(UserName, UserPass);
try
{
objSMTP.Send(objMsg);
return true;
}
catch
{
return false;
}
return false;
}
#endregion
#region toInt
/// <summary>
///得到Int类型的值
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static int toInt(object v)
{
int r = 0;
try
{
r = Convert.ToInt32(v);
}
catch
{
r = 0;
}
return r;
}
/// <summary>
///
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static int toInt(string v)
{
return toInt((object)v);
}
#endregion
#region toString
/// <summary>
/// 得到string类型的值
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static string toString(object v)
{
string r = "";
try
{
r = Convert.ToString(v);
if (r == null)
{
throw new Exception("转换之后值异常!", null);
}
}
catch
{
r = "";
}
return r;
}
/// <summary>
///
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static string toString(int v)
{
return toString((object)v);
}
#endregion
2.从web.config中获取需要的的信息
webconfig中的数据是
<?xml version="1.0"?>
<configuration>
<system.net>
<mailSettings>
<smtp from="用户名@163.com">
<network host="smtp.163.com" port="25" userName="用户名" password="密码**"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
发送邮件的方法是:
/// <summary>
/// 使用SMTP发送邮件,发件人信息保存在Web.Config中。
/// </summary>
/// <param name="MailTo">收件人,多个可使用,分隔</param>
/// <param name="strTitle">邮件主题</param>
/// <param name="strBody">邮件内容</param>
/// <param name="isHTML">是否为HTML邮件</param>
/// <returns>发送状态</returns>
public static bool sendMail(string MailTo,Attachment[] attach,string strTitle, string strBody, bool isHTML)
{
string appPath = System.Web.HttpContext.Current.Request.ApplicationPath;
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(appPath);
97fb
SmtpSection smtp = (SmtpSection)config.GetSection("system.net/mailSettings/smtp");
string smtpHost = smtp.Network.Host + ":" + smtp.Network.Port;
if (smtpHost == null) { return false; }
string UserName = smtp.Network.UserName;
if (UserName == null) { return false; }
string UserPass = smtp.Network.Password;
if (UserPass == null) { return false; }
string MailName = "";
if (MailName == null) { return false; }
string MailFrom = smtp.From;
if (MailFrom == null) { return false; }
return sendMail(smtpHost,attach,UserName, UserPass, MailName, MailFrom, MailTo, strTitle, strBody, isHTML);
}
3.WinForm中的App.config中获取邮件发送的信息
App.config中的数据与web.config中的数据相同
方法如下:
/// <summary>
/// 使用SMTP发送邮件,发件人信息保存在Web.Config中。
/// </summary>
/// <param name="MailTo">收件人,多个可使用,分隔</param>
/// <param name="attach">附件的地址</param>
/// <param name="strTitle">邮件主题</param>
/// <param name="strBody">邮件内容</param>
/// <param name="isHTML">是否为HTML邮件</param>
/// <returns>发送状态</returns>
public static bool sendMail(string MailTo,Attachment [] attach, string strTitle, string strBody, bool isHTML)
{
try
{
#region WinForm从app.config中得到发送Mail所需的参数
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//OpenExeConfiguration2个方法的参数我也没搞清楚到底该怎么用。
MailSettingsSectionGroup mailSettings = NetSectionGroup.GetSectionGroup(config).MailSettings;
string smtpHost = mailSettings.Smtp.Network.Host + ":" + mailSettings.Smtp.Network.Port;
if (smtpHost == null) { return false; }
string UserName = mailSettings.Smtp.Network.UserName;
if (UserName == null) { return false; }
string UserPass = mailSettings.Smtp.Network.Password;
if (UserPass == null) { return false; }
string MailName = "";
if (MailName == null) { return false; }
string MailFrom = mailSettings.Smtp.From;
if (MailFrom == null) { return false; }
return sendMail(smtpHost,attach, UserName, UserPass, MailName, MailFrom, MailTo, strTitle, strBody, isHTML);
#endregion
}
catch (Exception e)
{
string dd = e.Message;
throw;
}
}
首先写一个邮件发送的方法
/// 使用SMTP发送邮件
/// </summary>
/// <param name="smtpHost">smtp服务器信息,格式:Host:Port,Port可省略,采用默认端口25</param>
/// <param name="attach">附件的地址</param>
/// <param name="UserName">smtp服务器登录用户名</param>
/// <param name="UserPass">smtp服务器登录密码</param>
/// <param name="MailName">发件人昵称</param>
/// <param name="MailFrom">发件人</param>
/// <param name="MailTo">收件人,多个可使用,分隔</param>
/// <param name="strTitle">邮件主题</param>
/// <param name="strBody">邮件内容</param>
/// <param name="isHTML">是否为HTML邮件</param>
/// <returns>发送状态</returns>
public static bool sendMail(string smtpHost, Attachment[] attach, string UserName, string UserPass, string MailName, string MailFrom, string MailTo, string strTitle, string strBody, bool isHTML)
{
System.Net.Mail.MailMessage objMsg = new System.Net.Mail.MailMessage();
objMsg.From = new System.Net.Mail.MailAddress(MailFrom, MailName);
objMsg.To.Add(MailTo);
objMsg.Subject = strTitle;
objMsg.IsBodyHtml = isHTML;
objMsg.BodyEncoding = System.Text.Encoding.UTF8;
objMsg.Body = strBody;
if (attach.Length > 0)
{
foreach (var item in attach)
{
objMsg.Attachments.Add(item);
}
}
string[] smtpHostArr = smtpHost.Split(':');
string smtpHostIPAdd = String.Copy(smtpHost);
int smtpHostPort = 25;
if (smtpHostArr.Length >= 2)
{
smtpHostIPAdd = toString(smtpHostArr[0].ToString());
smtpHostPort = toInt(smtpHostArr[1].ToString());
}
System.Net.Mail.SmtpClient objSMTP = new System.Net.Mail.SmtpClient();
objSMTP.Host = smtpHostIPAdd;
objSMTP.Port = smtpHostPort;
objSMTP.Credentials = new System.Net.NetworkCredential(UserName, UserPass);
try
{
objSMTP.Send(objMsg);
return true;
}
catch
{
return false;
}
return false;
}
#endregion
#region toInt
/// <summary>
///得到Int类型的值
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static int toInt(object v)
{
int r = 0;
try
{
r = Convert.ToInt32(v);
}
catch
{
r = 0;
}
return r;
}
/// <summary>
///
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static int toInt(string v)
{
return toInt((object)v);
}
#endregion
#region toString
/// <summary>
/// 得到string类型的值
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static string toString(object v)
{
string r = "";
try
{
r = Convert.ToString(v);
if (r == null)
{
throw new Exception("转换之后值异常!", null);
}
}
catch
{
r = "";
}
return r;
}
/// <summary>
///
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
public static string toString(int v)
{
return toString((object)v);
}
#endregion
2.从web.config中获取需要的的信息
webconfig中的数据是
<?xml version="1.0"?>
<configuration>
<system.net>
<mailSettings>
<smtp from="用户名@163.com">
<network host="smtp.163.com" port="25" userName="用户名" password="密码**"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
发送邮件的方法是:
/// <summary>
/// 使用SMTP发送邮件,发件人信息保存在Web.Config中。
/// </summary>
/// <param name="MailTo">收件人,多个可使用,分隔</param>
/// <param name="strTitle">邮件主题</param>
/// <param name="strBody">邮件内容</param>
/// <param name="isHTML">是否为HTML邮件</param>
/// <returns>发送状态</returns>
public static bool sendMail(string MailTo,Attachment[] attach,string strTitle, string strBody, bool isHTML)
{
string appPath = System.Web.HttpContext.Current.Request.ApplicationPath;
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(appPath);
97fb
SmtpSection smtp = (SmtpSection)config.GetSection("system.net/mailSettings/smtp");
string smtpHost = smtp.Network.Host + ":" + smtp.Network.Port;
if (smtpHost == null) { return false; }
string UserName = smtp.Network.UserName;
if (UserName == null) { return false; }
string UserPass = smtp.Network.Password;
if (UserPass == null) { return false; }
string MailName = "";
if (MailName == null) { return false; }
string MailFrom = smtp.From;
if (MailFrom == null) { return false; }
return sendMail(smtpHost,attach,UserName, UserPass, MailName, MailFrom, MailTo, strTitle, strBody, isHTML);
}
3.WinForm中的App.config中获取邮件发送的信息
App.config中的数据与web.config中的数据相同
方法如下:
/// <summary>
/// 使用SMTP发送邮件,发件人信息保存在Web.Config中。
/// </summary>
/// <param name="MailTo">收件人,多个可使用,分隔</param>
/// <param name="attach">附件的地址</param>
/// <param name="strTitle">邮件主题</param>
/// <param name="strBody">邮件内容</param>
/// <param name="isHTML">是否为HTML邮件</param>
/// <returns>发送状态</returns>
public static bool sendMail(string MailTo,Attachment [] attach, string strTitle, string strBody, bool isHTML)
{
try
{
#region WinForm从app.config中得到发送Mail所需的参数
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//OpenExeConfiguration2个方法的参数我也没搞清楚到底该怎么用。
MailSettingsSectionGroup mailSettings = NetSectionGroup.GetSectionGroup(config).MailSettings;
string smtpHost = mailSettings.Smtp.Network.Host + ":" + mailSettings.Smtp.Network.Port;
if (smtpHost == null) { return false; }
string UserName = mailSettings.Smtp.Network.UserName;
if (UserName == null) { return false; }
string UserPass = mailSettings.Smtp.Network.Password;
if (UserPass == null) { return false; }
string MailName = "";
if (MailName == null) { return false; }
string MailFrom = mailSettings.Smtp.From;
if (MailFrom == null) { return false; }
return sendMail(smtpHost,attach, UserName, UserPass, MailName, MailFrom, MailTo, strTitle, strBody, isHTML);
#endregion
}
catch (Exception e)
{
string dd = e.Message;
throw;
}
}
相关文章推荐
- C#获取web.config配置文件内容的方法
- C#获取web.config配置文件内容的方法
- c#发送邮件之System.Net.Mail方法
- servlet都有一个servletConfig对象;四个config对象可以调用的方法;ServletContext对象之获取web项目信息;设置全局初始化参数的配置
- C#代码获取web.config中的配置信息
- C#发送邮件,使用System.Web.Mail的版本
- vs2005中发送邮件的方法(C#)
- 【转自loveifa】PHP 获取邮箱未读邮件的方法 根据receivemail改编而来,已解决乱码,编码问题
- 使用System.Web.Mail通过需验证的邮件服务器发送邮件
- shell 脚本获取远程服务器信息并发送邮件
- 一个通过web.Mail发送邮件的类
- 用C#编写获取远程IP,MAC的方法
- c#获取xp系统信息的几种方法
- C#实现获取mp3 Tag信息的方法
- C#发送Email邮件方法总结
- 发送邮件(E-mail)方法整理合集
- C#获取Excel架构信息的方法
- 黄聪:如何利用PHP通过mail方法发送邮件【转】
- C# 使用app.config文件方法 读取外部配置信息
- 发送邮件时遇到mail包冲突异常Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 解决方法