现在工作的空余时间比较多,所以就有时间干干自己想做的事,然后就想起了学习学习Asp.net Web Forums V2.0 beta的源码来了。在我自己进行注册的时候,发现了两个令人头疼的问题:
1:不能够发送电子邮件。
2:发送的电子邮件里没有密码!
自己很是奇怪,如果存在这两个问题,那Fourm怎么能够进行运作呢?既然有问题,那就解决呗!
首先来看第一个问题:提示的错误信息:The transport failed to connect to the server 那可能是自己没有设置StmpServer的属性,在Component程序集的Compontent/SiteSettings.cs中有关于stmp的参数设置,将 private string defaultSmtpServer,private string defaultAdminEmailAddress分别改为本机地址以及一个有效地邮件地址既可解决第一个问题!
关键是第二个问题:V2.0的思路是这样的,首先产生一个随机的10位长的密码,然后进行加密,将加密后的结果存入数据库中,如果成功的话,返回一个user类型的对象并发送Email告诉用户的临时密码。返回的User对象有一个属性为UserID,再根据UserID来从数据库中得到此用户的所有信息(没有密码信息,即使有的话,也是经过加密的)。所以注册的人永远得不到自己得密码,从而无法登陆。
解决的办法就是修改发送Email的方法,增加一个String类型的参数:tempPassword。详细如下:
public static bool SendEmail(int userID, EmailType emailType, string tempPassword)
{
return SendEmail(userID, emailType, 0, null, null, null, tempPassword);
}
然后在public static CreateUserStatus Create(User user, bool sendEmail) 中修改如下代码:
if (sendEmail)
Emails.SendEmail(user.UserID, EmailType.NewUserAccountCreated, password);
当然还有修改Emails.cs文件中的所以涉及到SendEmail方法的程序,到此一切OK!
后来对比了一下Asp.net最早的Fourm版本,发现这两个的变化太大了,数据库的设计至少在Fourm_User上完全变了样,而且以前数据库里存储的是没有经过加密的原始密码!
疑惑的是:注册的问题真的是这样的吗?如果是的话,那不就完全不能用呀!
在解决第一个问题的时候,遇到了这个网址:
1: http://www.systemwebmail.com/faq
