Как получить SmtpServer NetworkCredentials при использовании почтового сервиса в формах Xamarin? - PullRequest
3 голосов
/ 26 мая 2019

Я реализую простую функцию 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");
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...