在Xamarin表单中使用邮件服务时,如何获取SmtpServer网络凭据?

在Xamarin表单中使用邮件服务时,如何获取SmtpServer网络凭据?,xamarin,xamarin.forms,smtpclient,Xamarin,Xamarin.forms,Smtpclient,我正在我的Xamarin表单应用程序中实现一个简单的忘记密码功能。当播放器在文本字段中提供电子邮件时,将检查数据库中是否存在该电子邮件,如果存在,将获取与该电子邮件相关联的密码并将密码发送到该电子邮件 在以下smtp步骤中SmtpServer.Credentials=new System.Net.NetworkCredential(“电子邮件”、“密码”)我们从何处获得在网络凭据中作为电子邮件/密码提供的凭据 namespace soccerapp { [XamlCompilation(

我正在我的Xamarin表单应用程序中实现一个简单的忘记密码功能。当播放器在文本字段中提供
电子邮件时,将检查数据库中是否存在该电子邮件,如果存在,将获取与该电子邮件相关联的密码并将密码发送到该电子邮件

在以下smtp步骤中
SmtpServer.Credentials=new System.Net.NetworkCredential(“电子邮件”、“密码”)我们从何处获得在
网络凭据中作为电子邮件/密码提供的凭据

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");
                }
            }
        }
    }
}
namespace soccerapp
{
[XamlCompilation(XamlCompilationOptions.Compile)]
公共部分类ForgotPassword:ContentPage
{
专用连接连接;
字符串文本;
公共放弃密码()
{
初始化组件();
conn=DependencyService.Get().GetConnection();
}
已单击公共无效BTN发送(对象发送者,事件参数e)
{
emailText=txtEmail.Text;
int count=(从conn.Table()中的x开始,其中(x=>x.Email==emailText)选择x).count();
如果(计数!=0)
{
var detail=conn.Table().First(x=>x.Email==emailText);
var playerPassword=detail.Password;
尝试
{
MailMessage mail=新的MailMessage();
SmtpClient SmtpServer=新的SmtpClient(“smtp.gmail.com”);
mail.From=新邮件地址(“admin@somesite.nz");
mail.To.Add(emailText);
mail.Subject=“你好”;
mail.Body=“你的足球密码:”+playerPassword;
SmtpServer.Port=587;
SmtpServer.Host=“smtp.gmail.com”;
SmtpServer.EnableSsl=true;
SmtpServer.UseDefaultCredentials=false;
SmtpServer.Credentials=新系统.Net.NetworkCredential(“一些_email@gmail.com“,”密码“);
发送(邮件);
}
捕获(例外情况除外)
{
显示警报(“故障”,例如信息“正常”);
}
}
}
}
}

Quick question,您是否有自己的电子邮件服务器和域可供使用,或者您是否希望使用外部电子邮件服务,如sendgrid?是的,我有自己的域和电子邮件服务器。好的,我会在域上创建一个电子邮件帐户,用于发送这些电子邮件,通常类似于“密码”-reset@yourDomainName". 创建帐户后,只需将该帐户的电子邮件和密码放在上面的占位符中,然后查看测试电子邮件是否有效。但是,如果我可以指出一些事情,也许考虑将电子邮件凭据存储在安全文件中而不是代码中。此外,在解决方案的体系结构中,生成“重置密码”页面肯定比存储和发送明文密码给用户更安全