可以完美发送邮件的
解决方案 »
- 引用WebClient类为什么看不到DownloadData,DownloadDataAsync方法?
- VS2008发布网站以后为什么有的代码会有空格?
- 一个小问题
- 有关自己做的windows服务无响应问题
- C# 随机变换系统背景桌面
- combobox - 非数据库数据的关联
- 对 .Net QuickStart 一段代码的不解,请指点!
- 有没有人搞过sharepoint的文档管理的,在线等,求教
- 请问后台添加GridView如何分页
- 如何提取Visio图中XML格式的数据
- 使用C#(WinForm)写的程序时报的错
- C# Update DataBase int SQL question...help...plz.
/// 发送电子邮件类
/// </summary>
public class Mail
{
/// <summary>
/// 发送电子邮件函数
/// </summary>
/// <param name="txtHost">电子邮件服务主机名称</param>
/// <param name="txtFrom">发送人地志</param>
/// <param name="txtPass">发信人密码</param>
/// <param name="txtTo">收信人地址</param>
/// <param name="txtSubject">邮件标题</param>
/// <param name="txtBody">邮件内容</param>
/// <param name="isBodyHtml">是否采用HTML编码</param>
/// <param name="priority">电子邮件的优先级别</param>
/// <param name="encoding">内容采用的编码方式</param>
/// <param name="files">附件</param>
/// <returns>操作结果</returns>
public static string SendMail(string txtHost, string txtFrom, string txtPass, string txtTo, string txtSubject, string txtBody, bool isBodyHtml, MailPriority priority, System.Text.Encoding encoding, string[] files)
{
//电子邮件附件
Attachment data = null;
//传送的电子邮件类
MailMessage message = new MailMessage(txtFrom, txtTo);
//设置标题
message.Subject = txtSubject;
//设置内容
message.Body = txtBody;
//是否采用HTML编码
message.IsBodyHtml = isBodyHtml;
//电子邮件的优先级别
message.Priority = priority;
//内容采用的编码方式
message.BodyEncoding = encoding;
try
{
//添加附件
//if (files.Length > 0 && files != null)
//{
// for (int i = 0; i < files.Length; i++)
// {
// //实例话电子邮件附件,并设置类型
// data = new Attachment(files[i], System.Net.Mime.MediaTypeNames.Application.Octet);
// //实例邮件内容
// System.Net.Mime.ContentDisposition disposition = data.ContentDisposition;
// //取得建档日期
// disposition.CreationDate = System.IO.File.GetCreationTime(files[i]);
// //取得附件修改日期
// disposition.ModificationDate = System.IO.File.GetLastWriteTime(files[i]);
// //取得读取日期
// disposition.ReadDate = System.IO.File.GetLastAccessTime(files[i]);
// //设定文件名称
// System.IO.FileInfo fi = new System.IO.FileInfo(files[i]);
// disposition.FileName = fi.Name.ToString();
// //添加附件
// message.Attachments.Add(data);
// }
//}
//实例从送电子邮件类
SmtpClient client = new SmtpClient();
//设置电子邮件主机名称
client.Host = txtHost;
//取得寄信人认证
client.Credentials = new NetworkCredential(txtFrom, txtPass);
//发送电子邮件
client.Send(message);
return "邮件发送成功";
}
catch (Exception Err)
{
//返回错误信息
return Err.Message;
}
finally
{
//销毁电子邮件附件
if (data != null)
{
data.Dispose();
}
//销毁传送的电子邮件实例
message.Dispose();
}
}
}
...{
jmail.Message Msg=new jmail.Message();
jmail.POP3 jpop = new jmail.POP3();
jmail.Attachments atts;
jmail.Attachment att; //username为用户名,该方法通过用户名获取该用户的pop设置,即用户的POP用户名,密码,POP服务器地址以及端口号这四个参数,这四个参数是连接POP服务器的必用参数.
SqlDataReader dataReader = this.ExtGetSetting(Username);
if(dataReader.Read())
...{
if(dataReader["PopServer"].ToString()!=""&&dataReader["PopUsername"].ToString()!="")
...{
//连接POP服务器
jpop.Connect(dataReader["PopUsername"].ToString(),dataReader["PopPassword"].ToString(),dataReader["PopServer"].ToString(),Int32.Parse(dataReader["PopPort"].ToString()));
//如果服务器上有邮件
if(jpop.Count>=1)
...{
for(int i=1;i <=jpop.Count;i++)
...{
Msg = jpop.Messages[i];
atts=Msg.Attachments; //取数据库中邮件信息中的最大发送时间,即最近接收到的一封邮件的时间
Database dbase=new Database();
DataTable data=dbase.GetDataTable("select max(MailSendDate) as MailSenderDate from TabMailList where MailTypeFlag='1'
if(Msg.Date>Convert.ToDateTime(data.Rows[0][0].ToString()))
...{
//将这封新邮件的信息保存到数据库
this.SaveExtMail(Msg,Username,dataReader["Email"].ToString(),jpop.GetMessageUID(i)); //获取附件上传到服务器并且将信息存入数据库
if(atts.Count>=1)
...{
for(int k=0;k <atts.Count;k++)
...{
att=atts[k];//获得附件
string attname=att.Name;
try
...{
Random TempNameInt = new Random();
string NewMailDirName = TempNameInt.Next(100000000).ToString();
Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(".")+"AttachFiles"+Username+""+NewMailDirName);
string mailPath="AttachFiles"+Username+""+NewMailDirName+""+attname;
att.SaveToFile(System.Web.HttpContext.Current.Server.MapPath(".")+mailPath);
//获取该封邮件在数据库的ID,以便和附件信息相对应,取邮件表中的最大ID即可
int mailID=this.GetMailID();
//将附件信息存入数据库
this.AttExtSend(mailID,attname,att.Size,mailPath,Msg.From);
}
catch(Exception ex)
...{
throw new Exception(ex.Message);
}
}
}
}
}
}
//删除服务器上的邮件
jpop.DeleteMessages();
//断开连接
jpop.Disconnect();
}
}