您的位置:首页 > 编程语言 > C#

C#------ 发送邮件

2008-10-13 14:55 197 查看
using System;

using System.Net.Mail;

using System.Text;

using System.IO;

using System.Security.Cryptography;

using System.Xml;

using System.Net;

using System.Data;

namespace BusinessFacade

{

/// <summary>

/// 传真类

/// </summary>

public class Fax

{

/// <summary>

/// 单批发送最多号码数,超过这个数量就要分组

/// </summary>

const int MAX_FAX_COUNT = 100;

string m_to;

string m_subject;

string m_body;

MailPriority m_mailPriority;

string m_attach;

string m_mailServer;

string m_mailServerAccount;

string m_mailServerPassword;

public Fax()

{

m_to = "outfax@myfax.cn";

m_subject = "";

m_body = "";

m_mailPriority = MailPriority.Normal;

m_attach = "";

m_mailServer = "myfax.cn";

m_mailServerAccount = "";

m_mailServerPassword = "";

}

public Fax(string tomail,string server)

{

m_to = tomail;

m_subject = "";

m_body = "";

m_mailPriority = MailPriority.Normal;

m_attach = "";

m_mailServer = server;

m_mailServerAccount = "";

m_mailServerPassword = "";

}

#region 属性

/// <summary>

/// 发送方账号

/// </summary>

public string FromAccount

{

get { return m_mailServerAccount; }

set { m_mailServerAccount = value; }

}

/// <summary>

/// 发送方密码

/// </summary>

public string FromPassword

{

get { return m_mailServerPassword; }

set { m_mailServerPassword = value; }

}

/// <summary>

/// 接收方传真号码,多个号码用“;”号隔开。

/// </summary>

public string To

{

get { return m_subject; }

set { m_subject = value; }

}

/// <summary>

/// 传真内容

/// </summary>

public string Content

{

get { return m_body; }

set { m_body = value; }

}

/// <summary>

/// 传真附件路径,多个附件用“,”号隔开。

/// </summary>

public string Attach

{

get { return m_attach; }

set { m_attach = value; }

}

#endregion

/// <summary>

/// 发送传真

/// </summary>

public void Send()

{

MailMessage MyMail = new MailMessage();

try

{

MyMail.To.Add(new MailAddress(m_to));

MyMail.From = new MailAddress(m_mailServerAccount + "@" + m_mailServer);

MyMail.Subject = m_subject;

MyMail.SubjectEncoding = Encoding.UTF8;

MyMail.Body = m_body;

MyMail.BodyEncoding = Encoding.UTF8;

MyMail.IsBodyHtml = true;

MyMail.Priority = m_mailPriority;

MyMail.Headers.Add("Message-ID", DateTime.Now.ToFileTime() + "@17u.net");

// 添加附件

if (m_attach != "")

{

char[] delim = new char[] { ',' };

foreach (string sSubstr in m_attach.Split(delim))

{

Attachment MyAttachment = new Attachment(sSubstr);

MyMail.Attachments.Add(MyAttachment);

}

}

SmtpClient smtp = new SmtpClient();

smtp.UseDefaultCredentials = true;

smtp.Credentials = new System.Net.NetworkCredential(m_mailServerAccount, m_mailServerPassword);

smtp.Host = m_mailServer;

smtp.Send(MyMail);

}

finally

{

MyMail.Dispose();

}

}

/// <summary>

/// 向to数组中的每一号码发送传真

/// </summary>

/// <param name="to"></param>

public void Send(object[] to)

{

//分组

double group = Math.Ceiling((double)(to.Length * 1.0 / MAX_FAX_COUNT));

for (int g = 0; g < group; g++)

{

bool firstChild = true;

string faxStr = "";

for (int i = 0; i < ((g + 1) * MAX_FAX_COUNT) && i < to.Length; i++)

{

if (ValidatorHelper.IsNumeric(to[i]))

{

if (!firstChild)

faxStr += ",";

else

firstChild = false;

faxStr += (string)to[i];

}

}

this.To = faxStr;

this.Send();

}

}

public static void SendEmail(string to,string subject,string msg, string from, string pwd,string server)

{

MailMessage MyMail = new MailMessage();

MyMail.From = new MailAddress(from);

MyMail.To.Add(new MailAddress(to));

MyMail.Subject = subject;

MyMail.SubjectEncoding = Encoding.UTF8;

MyMail.Body = msg;

MyMail.BodyEncoding = Encoding.UTF8;

MyMail.IsBodyHtml = true;

MyMail.Headers.Add("Message-ID", DateTime.Now.ToFileTime() + "@17u.net");

SmtpClient smtp = new SmtpClient();

smtp.UseDefaultCredentials = true;

smtp.Credentials = new System.Net.NetworkCredential(from, pwd);

smtp.Host = server;

try

{

smtp.Send(MyMail);

}

catch (Exception ex)

{

throw ex;

}

}

//定义标准时间1970后的秒数

protected static readonly DateTime unixTPStart =

TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));

//获取ip

public string GetLocalIP()

{

string sHostName = System.Net.Dns.GetHostName();

System.Net.IPHostEntry hostinfo = System.Net.Dns.GetHostByName(sHostName);

System.Net.IPAddress add = hostinfo.AddressList[0];

return add.ToString();

}

//进行md5加密

public static string getMD5(string str)

{

MD5 md5 = new MD5CryptoServiceProvider();

byte[] data = System.Text.Encoding.Default.GetBytes(str);

byte[] result = md5.ComputeHash(data);

String ret = "";

for (int i = 0; i < result.Length; i++)

ret += result[i].ToString("x").PadLeft(2, '0');

return ret;

}

//生成timestamp

public static long toUTP(DateTime dt)

{

TimeSpan toNow = dt.Subtract(unixTPStart);

return (long)Math.Round(toNow.TotalSeconds);

}

public static System.Data.DataSet GetDataSetByRequest(string param)

{

WebRequest webrequest = WebRequest.Create(param);

webrequest.Method = "POST";//请求的类型

webrequest.Timeout = 300000; //超时的毫秒数

webrequest.ContentType = "application/x-www-form-urlencoded";

System.Data.DataSet DS = new DataSet();

Stream oStreamOut = null;

try

{

oStreamOut = webrequest.GetRequestStream();

}

catch

{

webrequest.Abort();

DS.Dispose();

//System.Web.HttpContext.Current.Response.End();

}

finally

{

}

oStreamOut.Close();

WebResponse myWebResponse = null;

try

{

myWebResponse = webrequest.GetResponse();

Stream streamResponse = myWebResponse.GetResponseStream();

Encoding encode = Encoding.GetEncoding("GB2312");

StreamReader streamRead = new StreamReader(streamResponse, encode);

System.Xml.XmlTextReader Reader = new System.Xml.XmlTextReader(streamRead);

DS.ReadXml(Reader);

Reader.Close();

streamResponse.Close();

streamRead.Close();

myWebResponse.Close();

}

catch

{

webrequest.Abort();

DS.Dispose();

//System.Web.HttpContext.Current.Response.End();

}

return DS;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: