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);
/// </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
}
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);
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);
}
/// 使用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);
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
{
/// 使用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;
}
}
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;
}
}