|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
数据挖掘有点高深的,主要估计就是使用一些算法提取一些实用的数据。学好数据挖掘的话可以应聘baidu或者google,但是一般人家对算法的要求听高的。你最好还是学点应用型的吧。这种主要是研究型的。</p>用asp.net发送Email已不是一件奇怪的事变了.能够接纳良多种办法来发送,好比SmtpMail办法,Socket办法,经由过程第三方组件Jmail等体例都能够.可是本文会商的不是发送邮件接纳的手艺,而是经由过程公司的一个项目(手机主题)理论说说邮件引擎的架构,有不敷和改善的地方,接待偕行品评斧正.
我们之前发送邮件的时分接纳的办法就是,在页面内里触发举行发送,好比注册了会员,点了提交按钮以后,将会员数据拔出到数据库,然落后行发送.这类办法固然复杂便利,可是有一个缺点,假如邮件发送失利,就不克不及重发了.因而,在我们项目中接纳的办法是,将必要发送的邮件一致拔出到一个邮件行列,然后由引擎来处置这个行列.详细的做法是,数据库计划:
Win_EmailQueue(邮件行列表)
QueueIdint主动编号,主键Id
ToEmailnvarchar(100)收件人
Titlenvarchar(100)邮件题目
Contentntext邮件内容
AddDatedatetime增加工夫
TryTimesint毛病重试次数
LastSendTimedatetime最初一次发送的工夫
Statusint形态:0未发送1已发送
必要发送邮件的时分,如注册会员乐成后,将邮件的内容拔出到表中.
邮件引擎能够用一个体系服务来完成,安装在Web服务器统一台服务器下面,也能够依据负载实践情形安装在别的一台服务器下面,加重Web服务器包袱.邮件引擎的义务是距离一个工夫(好比5秒),查询邮件行列,依据工夫按次发送邮件,为了下降引擎的包袱,能够设置每次发送15封,固然这个数字要依据实践情形来设置.
以下是处置行列和发送邮件的一些代码.
///
///发送Email行列,来自手机主题http://www.shouji138.com
///
publicstaticvoidSendEmailQueue()
{
//取最新的15条未乐成的举行发送。
stringsql="selecttop15*fromWin_EmailQueuewhereStatus=0andToEmailorderbyAddDatedesc";
DataTabledt=DbHelperSQL.Query(sql).Tables[0];
for(inti=0;i<dt.Rows.Count;i++)
{
stringtitle=dt.Rows[i]["Title"].ToString();
stringcontent=dt.Rows[i]["Content"].ToString();
stringto=dt.Rows[i]["ToEmail"].ToString();
stringCreateTime=dt.Rows[i]["AddDate"].ToString();
stringQueueID=dt.Rows[i]["QueueID"].ToString();
boolflag=EmailUtil.Send(title,to,content);
if(flag)
{
//发送乐成,将Status设置为1
sql="updateWin_EmailQueuesetStatus=1whereQueueID="+QueueID+"";
}
else
{
//发送失利,将失利次数增添1
sql="updateWin_EmailQueuesetTryTimes=TryTimes+1,LastSendTime="+DateTime.Now.ToString()+"whereQueueID="+QueueID+"";
}
DbHelperSQL.ExecuteSql(sql);
}
dt.Dispose();
//凌驾10次未乐成的邮件,将不再发送
sql="updateWin_EmailQueuesetStatus=1whereTryTimes>10";
DbHelperSQL.ExecuteSql(sql);
}
///
///实行发送操纵,来自手机主题http://www.shouji138.com
///
///
publicstaticboolSend(stringtitle,stringto,stringcontent)
{
//来自设置项
stringfromemail=System.Configuration.ConfigurationManager.AppSettings["SMTPUserName"];
stringsmtpserver=System.Configuration.ConfigurationManager.AppSettings["SMTPServer"];
stringfrompwd=System.Configuration.ConfigurationManager.AppSettings["SMTPPass"];
stringfromaddress=System.Configuration.ConfigurationManager.AppSettings["SMTPNickName"];
MailMessagemail=newMailMessage();
mail.From=newMailAddress(fromemail,fromaddress,Encoding.GetEncoding("gb2312"));//发件人的邮箱
mail.To.Add(newMailAddress(to));//收件人
mail.Subject=title;//主题
mail.Body=content;//内容
mail.IsBodyHtml=true;
mail.SubjectEncoding=Encoding.GetEncoding("gb2312");
mail.BodyEncoding=Encoding.GetEncoding("gb2312");
mail.IsBodyHtml=true;
mail.Priority=MailPriority.Normal;
SmtpClientsc=newSmtpClient(smtpserver);//发邮件的服务器手机主题http://www.shouji138.com
NetworkCredentialnc=newNetworkCredential(fromemail,frompwd);//请求的帐户信息
sc.Credentials=nc;
boolsuccessflag;
try
{
sc.Send(mail);
successflag=true;
}
catch
{
successflag=false;
}
returnsuccessflag;
}
在假造主机中,也能够接纳首页加载一个script页面,这个页面来充任邮件引擎.代码以下:
ajax/ajaxm.aspx
protectedvoidPage_Load(objectsender,EventArgse)
{
try
{
Email.SendEmailQueue();//发送邮件
}
catch(Exceptionex)
{
Log.SaveException(ex);//保留毛病日记
}
Response.Write("");
Response.End();
}
然后在首页大概内页,拔出代码及可.
今天去面试,被问到C#中的new关键字,看了那么多的书对new关键字还是有一定认识,回来又把new复习了一遍,发现了许多以前还不知道的细节。 |
|