PDA

View Full Version : سوال: ارسال ایمیل به کاربری که رمز خود را فراموش کرده



malloc
سه شنبه 07 آذر 1391, 17:14 عصر
سلام.
میخوام به کاربری که رمز خودشو فراموش کرده ایمیل بزنم و توی ایمیل بهش بگم که رمز عبور و نام کاربریش چیه.

چطور میتونم اینکارو بکنم.

بیشتر تو تنظیمات ارسال مشکل دارم یعنی مثلا نام سرور رو چی بزارم . اینا.

لطفا یجورایی آموزش بدید که بفهمم.

من تو سایت گشتم و پیدا نکردم اگه آموزشی در این مورد میدونید چه فیلم باشه چه آدرس سایت باشه یا هرچیز دیگه ای که کامل توضیح بده لطفا بهم معرفی کنید .

:متفکر:

shocraneh
سه شنبه 07 آذر 1391, 19:01 عصر
باسلام توسایت موارد زیاده.مثلا

http://barnamenevis.org/showthread.php?259180-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%A8%D8%A7-C&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%A7%DB %8C%D9%85%DB%8C%D9%84
ip سرور رو از هاست بگیرید

r_s1389@yahoo.com
سه شنبه 07 آذر 1391, 22:08 عصر
یک وقت نری رمز را برای شخص ارسال کنی
تو باید یک عدد تصادفی برای طرف ارسال کنی و سپس اون با این عدد تصادفی لاگین شده و رمز عبور خود را از حساب کاربری خودش تغییر دهد

r_s1389@yahoo.com
سه شنبه 07 آذر 1391, 22:10 عصر
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Net.Mail;

public partial class RecoverPassword : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conection.mycon.con());
SqlCommand cmd = new SqlCommand("select pass,tpass from tbuser where mail = @name", con);

cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@name", TextBox3.Text);

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

con.Open();
da.Fill(dt);
con.Close();

TextBox4.Text = dt.Rows[0]["pass"].ToString().Trim();
TextBox5.Text = dt.Rows[0]["tpass"].ToString().Trim();
Random rand = new Random();
string Password = rand.Next().ToString();
TextBox4.Text = Password.ToString();
TextBox5.Text = TextBox4.Text;

SqlCommand cmd1 = new SqlCommand("update tbuser set pass = @pass,tpass=@tpass where mail = @mail", con);

cmd.CommandType = CommandType.Text;

cmd1.Parameters.AddWithValue("@pass", TextBox4.Text);
cmd1.Parameters.AddWithValue("@tpass", TextBox5.Text);
cmd1.Parameters.AddWithValue("@mail", TextBox3.Text);

con.Open();
cmd1.ExecuteNonQuery();
con.Close();
Label2.Text = "anjam shod";

/*

SmtpClient obj = new SmtpClient();
MailMessage MailMsg = new MailMessage();
MailMsg.To.Clear();
MailMsg.To.Add(new MailAddress(TextBox3.Text));
MailMsg.From = new MailAddress("ramin.sahandi@yahoo.com");
MailMsg.Subject ="tezebook.in";
MailMsg.BodyEncoding = System.Text.Encoding.UTF8;
MailMsg.IsBodyHtml = true;
obj.Host = "smtp.mail.yahoo.com";
System.Net.NetworkCredential basicAuthenticaionInfo = new System.Net.NetworkCredential("ramin.sahandi@yahoo.com", "09144050345");
obj.UseDefaultCredentials = false;
obj.Credentials = basicAuthenticaionInfo;
MailMsg.Body ="رمز عبور جدید شما" + TextBox4.Text;
MailMsg.IsBodyHtml = true;
try
{
obj.Send(MailMsg);

}
*/

}
}

این کد رو هم ببین بلکه بدردتون خورد

M.D.A_M.D.A
سه شنبه 07 آذر 1391, 22:43 عصر
یک وقت نری رمز را برای شخص ارسال کنی


ارسال رمز برای کاربر که اشغال نداره چون رمز قبلی با رمز جدید که شما گفتید عدد تصادفی در اصل هیچ فرقی با هم نداره . در واقع این مهمه که حتی خود برنامه نویس هم نباید به رمز دسترسی داشته باشه چون اگه برنامه نویس دسترسی داشته باشه این امکان وجود داره که هر کس دیگه ای هم این سترسی براش ایجاد بشه حالا هک یا هر جور دیکه ای. رمز باید هش بشه و ذخیره بشه.

malloc
چهارشنبه 08 آذر 1391, 00:39 صبح
هش کردن و بلدم اما یه باگه مسخره داره موندم چیکارش کنم و اونم اینه وقتی تکس باکس حالت پسورد داره (یعنی تو مدی هست که ستاره نشون میده) درست کار نمیکنه . الگوریتم اینه که رمز شخص رو با یه الگوریتمی (مثلا md5 هش میکنم) و بعد هنگام لاگین مقدار پسورد وارد شده رو با همون الگوریتم هش میکنم و حالا مقدار دو عدد هش شده رو با هم مقایسه میکنم که اگه مقادیر یکسان بود اجازه ورود بده . اما این روش نمیدونم چرا رو حالتی که تکست باکس پسوردیه مقادیره یکسان بر نمیگردونه (یعنی مقدار هش شده ها با هم برابر نیست)

کسی میتونه نظری در این مورد بده

AmirGhasemi
چهارشنبه 08 آذر 1391, 11:58 صبح
سلام بر همه دوستان عزيز
ارسال نام كاربري و كلمه عبور و امثالهم كه فقط نيازمند يك متد ارسال است كه من قبلا يك كلاس ارسال ايميل خوب نوشته بودم و توي انجمن گذاشته ام
اين هم لينك دانلودش:::
http://uplod.ir/Eshragh/zdbpywmgse4u/Email.cs.htm

اما دوستان نكته اساسي چيز ديگري است! ببينيد همه مي دانيم كه بايد پسورد هش بشود و در ديتابيس ذخيره شود! ذخيره كردن پسورد بدون هش كردن كار بسيار احمقانه اي است كه همه ما قبولش داريم! اما شما اگه بخواهي براي ايميل زدن پسورد همان رشته هش شده را ايميل كني كه خب جواب نمي دهد!
خب همانطور كه دوستان گفتند معمولا ما يك عبارت تصادفي را به جاي پسورد همراه با نام كاربري به سمت طرف مي فرستيم بعد با استفاده از كوئري استرينگ چك مي كنيم كه اگر نام كاربري از همان ايميل بود و رشته تصادفي هم همان مقدار باشه اجازه تغيير پسورد به طرف داده ميشه! اين مكانيزم امنيتي خوبيه براي تغيير پسورد!!! و تقريبا همه از اين روش استفاده مي كنن

malloc
چهارشنبه 08 آذر 1391, 13:17 عصر
AmirGhasemi جان در مورد این کلاسی که نوشتی دوتا سوال دارم اول اینکه SMTPHost چیه؟؟؟؟ (اگه میشه توضیح کامل بده و مثال بزن) و دوم اینکه SMTPPort چیه؟؟؟؟؟ (فکر کنم این همونیه که پیش فرض 25 میزارن درسته؟)

malloc
چهارشنبه 08 آذر 1391, 13:44 عصر
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Net.Mail;

public partial class RecoverPassword : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conection.mycon.con());
SqlCommand cmd = new SqlCommand("select pass,tpass from tbuser where mail = @name", con);

cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@name", TextBox3.Text);

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

con.Open();
da.Fill(dt);
con.Close();

TextBox4.Text = dt.Rows[0]["pass"].ToString().Trim();
TextBox5.Text = dt.Rows[0]["tpass"].ToString().Trim();
Random rand = new Random();
string Password = rand.Next().ToString();
TextBox4.Text = Password.ToString();
TextBox5.Text = TextBox4.Text;

SqlCommand cmd1 = new SqlCommand("update tbuser set pass = @pass,tpass=@tpass where mail = @mail", con);

cmd.CommandType = CommandType.Text;

cmd1.Parameters.AddWithValue("@pass", TextBox4.Text);
cmd1.Parameters.AddWithValue("@tpass", TextBox5.Text);
cmd1.Parameters.AddWithValue("@mail", TextBox3.Text);

con.Open();
cmd1.ExecuteNonQuery();
con.Close();
Label2.Text = "anjam shod";

/*

SmtpClient obj = new SmtpClient();
MailMessage MailMsg = new MailMessage();
MailMsg.To.Clear();
MailMsg.To.Add(new MailAddress(TextBox3.Text));
MailMsg.From = new MailAddress("ramin.sahandi@yahoo.com");
MailMsg.Subject ="tezebook.in";
MailMsg.BodyEncoding = System.Text.Encoding.UTF8;
MailMsg.IsBodyHtml = true;
obj.Host = "smtp.mail.yahoo.com";
System.Net.NetworkCredential basicAuthenticaionInfo = new System.Net.NetworkCredential("ramin.sahandi@yahoo.com", "09144050345");
obj.UseDefaultCredentials = false;
obj.Credentials = basicAuthenticaionInfo;
MailMsg.Body ="رمز عبور جدید شما" + TextBox4.Text;
MailMsg.IsBodyHtml = true;
try
{
obj.Send(MailMsg);

}
*/

}
}

این کد رو هم ببین بلکه بدردتون خورد

دادشی من اینو دقیقا با ایمیلی که شما توش نوشتی (ramin.sahandi@yahoo.com) کار میکنه و خطا نمیده . اما بلافاصله بعد اینکه ایمیل و عوض میکنم به ایمیله یاهوی خودم خطای Failure sending mail. رو میده

AmirGhasemi
چهارشنبه 08 آذر 1391, 13:59 عصر
سلام دوست من
SMTPHost , SMTP Port را شما بايد از شركتي كه ازش هاست خريداري كردي و ميل سرورت داخل آن است بگيري!!
اگر از ياهو و جيميل استفاده مي كني كه توي اينترنت بزني مقدار اين دو پارامتر را براي جيميل و ياهو پيدا مي كني! مثلا پورت جيميل همان 25 است!
اين كلاس من براي تمامي ايميلها كار مي كند فقط كافي است كه اطلاعات خودت را درون پارامترهاي ان بنويسي! همين

malloc
چهارشنبه 08 آذر 1391, 14:19 عصر
میدونم آی کیو من تو این موارد کم میشه:لبخندساده:

SMTPHost , SMTP Port را شما بايد از شركتي كه ازش هاست خريداري كردي و ميل سرورت داخل آن است بگيري!!
یه سواله دیگه.من الان میخوام تو لوکال خودم تست کنم که این smtphost , smtpport چطوری کار میکنن و چی هستن.