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;
}
}
}