Я реализую простую функцию Forgot password
в моем приложении Xamarin Forms. Когда игрок вводит email
в текстовое поле, проверит, существует ли электронное письмо в базе данных, если да, получит пароль, связанный с этим электронным письмом, и отправит пароль на это электронное письмо.
На следующем шаге smtp SmtpServer.Credentials = new System.Net.NetworkCredential("email", "password");
откуда мы получаем учетные данные для предоставления в Network credentials
в качестве адреса электронной почты / пароля?
namespace soccerapp
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ForgotPassword : ContentPage
{
private SQLiteConnection conn;
string emailText;
public ForgotPassword()
{
InitializeComponent();
conn = DependencyService.Get<Isqlite>().GetConnection();
}
public void btnSend_Clicked(object sender, EventArgs e)
{
emailText = txtEmail.Text;
int count = (from x in conn.Table<PlayerDetails>().Where(x => x.Email == emailText) select x).Count();
if (count != 0)
{
var detail = conn.Table<PlayerDetails>().First(x => x.Email == emailText);
var playerPassword = detail.Password;
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("admin@somesite.nz");
mail.To.Add(emailText);
mail.Subject = "Hello";
mail.Body = "Your soccer password: "+playerPassword;
SmtpServer.Port = 587;
SmtpServer.Host = "smtp.gmail.com";
SmtpServer.EnableSsl = true;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("some_email@gmail.com", "password");
SmtpServer.Send(mail);
}
catch (Exception ex)
{
DisplayAlert("Faild", ex.Message, "OK");
}
}
}
}
}