Try these three ways to send email to user to active his account to be able to login to website
————–First Way ————-
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
//Send email to user for verifying account
CreateUserWizard cuw = (CreateUserWizard)sender;
MembershipUser user = Membership.GetUser(cuw.UserName);
Guid userId = (Guid)user.ProviderUserKey;
System.Net.Mail.MailMessage EmailMsg = new System.Net.Mail.MailMessage("info@ask.com", CreateUserWizard1.Email);
EmailMsg.Subject = "Email Verification from ask.com";
EmailMsg.IsBodyHtml = true;
EmailMsg.Body = "Thanks for registering with www.ask.com!<br /><br />Your activation link : <a href=http://www.ask.com/activate.aspx?ID=" + userId.ToString() + ">Link</a>.";
System.Net.Mail.SmtpClient mailClient = new System.Net.Mail.SmtpClient();
//This object stores the authentication values
System.Net.NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("smtpserverinfo", "smtpserverpassword");
mailClient.Host = "mail.ask.com";
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = basicAuthenticationInfo;
mailClient.Send(EmailMsg);
}
and in activate.aspx:
protected void Page_Load(object sender, EventArgs e)
{
Guid oGuid = new Guid(Request.QueryString["ID"]);
//Guid oGuid = new Guid();
MembershipUser oUser = Membership.GetUser(oGuid);
if (oUser != null && oUser.IsApproved == false)
{
oUser.IsApproved = true;
Membership.UpdateUser(oUser);
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(oUser.UserName, false);
}
}
———Second Way———–
My code looks like:
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
//Send email to user for verifying account
CreateUserWizard cuw = (CreateUserWizard)sender;
MembershipUser user = Membership.GetUser(cuw.UserName);
Guid userId = (Guid)user.ProviderUserKey;
System.Net.Mail.MailMessage EmailMsg = new System.Net.Mail.MailMessage("info@ask.com", CreateUserWizard1.Email);
EmailMsg.Subject = "Email Verification from ask.com";
EmailMsg.IsBodyHtml = true;
EmailMsg.Body = "Thanks for registering with www.ask.com!<br /><br />Your activation link : <a href=http://www.ask.com/activate.aspx?ID=" + userId.ToString() + ">Link</a>.";
System.Net.Mail.SmtpClient mailClient = new System.Net.Mail.SmtpClient();
//This object stores the authentication values
System.Net.NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("info@ask.com", "password"); //what is this "password" for??
mailClient.Host = "mail.ask.com";
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = basicAuthenticationInfo;
mailClient.Send(EmailMsg);
}
and in activate.aspx:
protected void Page_Load(object sender, EventArgs e)
{
Guid oGuid = new Guid();
MembershipUser oUser = Membership.GetUser(oGuid);
if (oUser != null && oUser.IsApproved == false)
{
oUser.IsApproved = true;
Membership.UpdateUser(oUser);
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(oUser.UserName, false);
}
}
——–Third Way——–
**
<asp:CreateUserWizard ID="CreateUserWizard1″ runat="server" LoginCreatedUser="false" DisableCreatedUser="true"
MailDefinition-BodyFileName="signupmail.txt" OnSendingMail="CreateUserWizard1_OnSendingMail">
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1″ runat="server">
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep ID="CompleteWizardStep1″ runat="server">
</asp:CompleteWizardStep>
</WizardSteps>
</asp:CreateUserWizard>
**
signupmail.txt:
Thank you for signing up for a new account at my site. To complete your registration, please follow the link below:
http://www.mysite.com/authorise.aspx?u=<%NEWUSERID%>
**
protected void CreateUserWizard1_OnSendingMail(object sender, MailMessageEventArgs e)
{
// Create an SQL connection object
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString))
{
// Create a command to get the user ID of the new user
SqlCommand command = new SqlCommand("SELECT m.UserId FROM aspnet_Membership m INNER JOIN aspnet_Users u ON m.UserId = u.UserId WHERE u.LoweredUserName= LOWER(@UserName) AND m.Email = @Email AND m.IsApproved = 0″,conn);
// Add the parameters
command.Parameters.AddWithValue("@UserName", MBTCreateUserWizard.UserName.ToString());
command.Parameters.AddWithValue("@Email", MBTCreateUserWizard.Email.ToString());
// Execute the query
conn.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
// Read the next row
reader.Read();
string userid = reader[0].ToString();
// Inject the user ID into the mail body
e.Message.Body = e.Message.Body.Replace("<%NEWUSERID%>", userid);
}
// Close everything
reader.Close();
conn.Close();
}
}
**
In authorise.aspx Page
protected void Page_Load(object sender, EventArgs e)
{
// Get the user ID from the request string
string userid = Request["u"];
if (userid != null && userid != "")
{
// Update the account to activate it
try
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString))
{
SqlCommand command = new SqlCommand("UPDATE aspnet_Membership SET IsApproved=1 WHERE UserId=@UserId", conn);
command.Parameters.AddWithValue("@UserId", userid);
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
// Success, inform or redirect
}
catch (SqlException se)
{
// Provide appropriate user feedback
}
}
else
{
// Provide appropriate user feedback
}
}
Hope it helps…
No comments:
Post a Comment