Esempio n. 1
0
    public void Register()
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString);

        con.Open();

        String     InserirConta        = "INSERT INTO Contas (Nome,DatadeNascimento,CodigoPostal,Localidade,Morada,Email,ENotificar,Palavrapasse,DatadeCriacao,UltimoLogin,Confirmada) values (@Nome,@DatadeNascimento,@CodigoPostal,@Localidade,@Morada,@Email,@ENotificar,@Palavrapasse,@DatadeCriacao,@UltimoLogin,@Confirmada)";
        SqlCommand comandoInserirConta = new SqlCommand(InserirConta, con);

        comandoInserirConta.Parameters.AddWithValue("@Nome", TextBoxName.Text);
        string[] DatadeNascimentoarray = TextBoxDateofBirth.Text.Split('/');
        DateTime DatadeNascimento      = new DateTime(Int32.Parse(DatadeNascimentoarray[2]), Int32.Parse(DatadeNascimentoarray[1]), Int32.Parse(DatadeNascimentoarray[0]));

        comandoInserirConta.Parameters.AddWithValue("@DatadeNascimento", DatadeNascimento);
        comandoInserirConta.Parameters.AddWithValue("@CodigoPostal", TextBoxZIPCode.Text);
        comandoInserirConta.Parameters.AddWithValue("@Localidade", DropDownListLocal.SelectedItem.ToString());
        comandoInserirConta.Parameters.AddWithValue("@Morada", TextBoxHomeAdress.Text);
        comandoInserirConta.Parameters.AddWithValue("@Email", TextBoxEmail.Text);
        comandoInserirConta.Parameters.AddWithValue("@ENotificar", CheckBoxENotificar.Checked);
        comandoInserirConta.Parameters.AddWithValue("@Palavrapasse", TextBoxPassword.Text);
        DateTime DatadeCriacao2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);

        comandoInserirConta.Parameters.AddWithValue("@DatadeCriacao", DatadeCriacao2);
        comandoInserirConta.Parameters.AddWithValue("@Confirmada", false);
        comandoInserirConta.Parameters.AddWithValue("@UltimoLogin", DatadeCriacao2);
        comandoInserirConta.ExecuteNonQuery();

        String     GetIddaContaInserida        = "SELECT Id_Contas FROM Contas WHERE Email=@Email";
        SqlCommand comandoGetIddaContaInserida = new SqlCommand(GetIddaContaInserida, con);

        comandoGetIddaContaInserida.Parameters.AddWithValue("@Email", TextBoxEmail.Text);
        int IddaContaInserida = Int32.Parse(comandoGetIddaContaInserida.ExecuteScalar().ToString());

        GeradordeCodigos Gerador             = new GeradordeCodigos();
        string           CodigodeConfirmacao = "";
        int CodigosEncontrados = 1;

        do
        {
            CodigodeConfirmacao = Gerador.GerarCodigo(50);
            //Verificar que o código de confirmação não existe, o que é extremamente improvável
            String     ProcurarporCodigodeConfirmacao        = "SELECT COUNT(*) FROM ContasCodigosdeConfirmacao WHERE CodigodeConfirmacao=@CodigodeConfirmacao";
            SqlCommand comandoProcurarporCodigodeConfirmacao = new SqlCommand(ProcurarporCodigodeConfirmacao, con);
            comandoProcurarporCodigodeConfirmacao.Parameters.AddWithValue("@CodigodeConfirmacao", CodigodeConfirmacao);
            CodigosEncontrados = Convert.ToInt32(comandoProcurarporCodigodeConfirmacao.ExecuteScalar());
        } while (CodigosEncontrados != 0);

        //Enviar o código para o e-email associado à conta registada
        SmtpClient smtpClient = new SmtpClient("smtp-mail.outlook.com", 25);

        smtpClient.Port                  = 587;
        smtpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "abc123IO");
        smtpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
        smtpClient.EnableSsl             = true;
        MailMessage mail = new MailMessage("*****@*****.**", "*****@*****.**");

        mail.Subject = "Confirme a sua conta";
        Uri uri = new Uri("http://*****:*****@FKId_Contas, @CodigodeConfirmacao, 0, 'false', GETDATE())";
            SqlCommand comandoInserirCodigodeConfirmacao = new SqlCommand(InserirCodigodeConfirmacao, con);
            comandoInserirCodigodeConfirmacao.Parameters.AddWithValue("@FKId_Contas", IddaContaInserida);
            comandoInserirCodigodeConfirmacao.Parameters.AddWithValue("@CodigodeConfirmacao", CodigodeConfirmacao);
            comandoInserirCodigodeConfirmacao.ExecuteNonQuery();
        }
        catch
        {
            //Quando a conta de e-mail [email protected] é bloqueada por suspeitas de spam, o programa entra no catch. É um problema básico em que me basta fazer login e confirmar a minha identidade
            //por telemóvel.
            Session["EmailporConfirmarFalhanoEnvio"] = 1;
        }
        Response.Redirect("Confirmar.aspx?c=" + 1.ToString());
        con.Close();
    }
Esempio n. 2
0
    protected void ButtonEntrar_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString);

        con.Open();
        String     VerificarLogin        = "******";
        SqlCommand comandoVerificarLogin = new SqlCommand(VerificarLogin, con);

        comandoVerificarLogin.Parameters.AddWithValue("@Email", TextBoxEmail.Text);
        SqlDataReader dr         = comandoVerificarLogin.ExecuteReader();
        int           Count      = 0;
        int           Id_Contas  = 0;
        bool          Confirmada = false;

        while (dr.Read())
        {
            Count      = Int32.Parse(dr["Count"].ToString());
            Id_Contas  = Int32.Parse(dr["Id_Contas"].ToString());
            Confirmada = bool.Parse(dr["Confirmada"].ToString());
        }
        dr.Close();
        bool canlogin = true;

        if (Session["PasswordsErradas"] != null)
        {
            if (Int32.Parse(Session["PasswordsErradas"].ToString()) >= 3)
            {
                canlogin = Validate();
            }
        }
        if (canlogin == false)
        {
            ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('O captcha está errado.');", true);
        }
        //Se o utilizador for obrigado a preencher o captcha, e se o tiver preenchido corretamente
        if (canlogin)
        {
            //Se o email inserido estiver associado a uma conta
            if (Count == 0)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('Este Email não existe.');", true);
            }
            else
            {
                //Se a conta estiver confirmada
                if (Confirmada == false)
                {
                    Session["EmailporConfirmar"] = TextBoxEmail.Text;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", " alert('Esta conta ainda não foi confirmada. Verifique o seu e-mail, enviámos-lhe uma mensagem sobre como confirmar a sua conta. Caso necessário, peça o reenvio do e-mail de confirmação.'); window.location.href = 'RecuperarConta.aspx';", true);
                }
                else
                {
                    String     ProcurarEstadodeBloqueio        = "SELECT COUNT(*) FROM ContasBloqueios WHERE FKId_Contas=@FKId_Contas and Estado=1";
                    SqlCommand comandoProcurarEstadodeBloqueio = new SqlCommand(ProcurarEstadodeBloqueio, con);
                    comandoProcurarEstadodeBloqueio.Parameters.AddWithValue("@FKId_Contas", Id_Contas);
                    int Bloqueada = 0;
                    if (comandoProcurarEstadodeBloqueio.ExecuteScalar() != null)
                    {
                        Bloqueada = Int32.Parse(comandoProcurarEstadodeBloqueio.ExecuteScalar().ToString());
                    }
                    //Se a conta não estiver bloqueada
                    if (Bloqueada == 1)
                    {
                        //Inserir a tentativa de login
                        String     InserirTentativadeLogin        = "******";
                        SqlCommand comandoInserirTentativadeLogin = new SqlCommand(InserirTentativadeLogin, con);
                        comandoInserirTentativadeLogin.Parameters.AddWithValue("@FKId_Contas", Id_Contas);
                        comandoInserirTentativadeLogin.ExecuteNonQuery();
                        ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('Esta conta foi bloqueada devido a demasiadas tentativas de login seguidas e sem sucesso. Verifique o seu e-mail, enviámos-lhe um e-mail para poder desbloquear a sua conta.');", true);
                    }
                    else
                    {
                        String     Autenticar        = "SELECT COUNT(*) FROM Contas WHERE Email=@Email and Palavrapasse=@Palavrapasse";
                        SqlCommand comandoAutenticar = new SqlCommand(Autenticar, con);
                        comandoAutenticar.Parameters.AddWithValue("@Email", TextBoxEmail.Text);
                        comandoAutenticar.Parameters.AddWithValue("@Palavrapasse", TextBoxPassword.Text);
                        int temp2 = Convert.ToInt32(comandoAutenticar.ExecuteScalar());
                        //Se a palavra-passe inserida estiver correta
                        if (temp2 == 1)
                        {
                            //Inserir a tentativa de login
                            String     InserirTentativadeLogin        = "******";
                            SqlCommand comandoInserirTentativadeLogin = new SqlCommand(InserirTentativadeLogin, con);
                            comandoInserirTentativadeLogin.Parameters.AddWithValue("@FKId_Contas", Id_Contas);
                            comandoInserirTentativadeLogin.ExecuteNonQuery();
                            //Criar as sessões de utilizador
                            String     ProcurarNomeporId        = "SELECT Nome FROM Contas WHERE Id_Contas=@Id_Contas";
                            SqlCommand comandoProcurarNomeporId = new SqlCommand(ProcurarNomeporId, con);
                            comandoProcurarNomeporId.Parameters.AddWithValue("@Id_Contas", Id_Contas);
                            string Nome = comandoProcurarNomeporId.ExecuteScalar().ToString();
                            Session["Utilizador"]                    = null;
                            Session["Nome_Utilizador"]               = null;
                            Session["Email_Utilizador"]              = null;
                            Session["ListadeCompras"]                = null;
                            Session["EmailporConfirmar"]             = null;
                            Session["EmailporConfirmarFalhanoEnvio"] = null;
                            Session["SenhaporMudar"]                 = null;
                            Session["Utilizador"]                    = Id_Contas;
                            Session["Nome_Utilizador"]               = Nome;
                            Session["Email_Utilizador"]              = TextBoxEmail.Text;
                            //Se o utilizador tiver qualquer lista de compras guardada, o servidor irá criar a sua sessão de compras
                            //Obter a lista de compras atual
                            String     ProcurarListadeCompras        = "SELECT Id_ListasdeCompras FROM ListasdeCompras WHERE FKId_Contas=@FKId_Contas and Estado='guardada'";
                            SqlCommand comandoProcurarListadeCompras = new SqlCommand(ProcurarListadeCompras, con);
                            comandoProcurarListadeCompras.Parameters.AddWithValue("@FKId_Contas", Id_Contas);
                            int IdListasdeCompras;
                            if (comandoProcurarListadeCompras.ExecuteScalar() == null)
                            {
                                IdListasdeCompras = 0;
                            }
                            else
                            {
                                IdListasdeCompras = Int32.Parse(comandoProcurarListadeCompras.ExecuteScalar().ToString());
                            }
                            if (IdListasdeCompras > 0)
                            {
                                //Obter o Id de todos os artigos nessa lista de compras
                                String     ProcurarArtigosnaListadeCompras        = "SELECT FKId_ProdutosVariedades FROM ListasdeComprasEntradas WHERE FKId_ListasdeCompras=@FKId_ListasdeCompras";
                                SqlCommand comandoProcurarArtigosnaListadeCompras = new SqlCommand(ProcurarArtigosnaListadeCompras, con);
                                comandoProcurarArtigosnaListadeCompras.Parameters.AddWithValue("@FKId_ListasdeCompras", IdListasdeCompras);
                                List <int>    IdArtigosnaListadeCompras = new List <int>();
                                SqlDataReader dr3 = comandoProcurarArtigosnaListadeCompras.ExecuteReader();
                                while (dr3.Read())
                                {
                                    IdArtigosnaListadeCompras.Add(Int32.Parse(dr3["FKId_ProdutosVariedades"].ToString()));
                                }
                                dr3.Close();
                                ListadeItensdoCarrodeCompras lista = new ListadeItensdoCarrodeCompras();
                                for (int i = 0; i < IdArtigosnaListadeCompras.Count; i++)
                                {
                                    //Através do Id, obter a informação dos artigos e carregá-la para a variável de sessão
                                    String     ProcurarAtributosdoArtigo        = "SELECT * FROM ListasdeComprasEntradas left join ProdutosVariedades on ListasdeComprasEntradas.FKId_ProdutosVariedades = ProdutosVariedades.Id_ProdutosVariedades left join Produtos on ProdutosVariedades.FKId_Produtos = Produtos.Id_Produtos where ListasdeComprasEntradas.FKId_ProdutosVariedades=@FKId_ProdutosVariedades";
                                    SqlCommand comandoProcurarAtributosdoArtigo = new SqlCommand(ProcurarAtributosdoArtigo, con);
                                    comandoProcurarAtributosdoArtigo.Parameters.AddWithValue("@FKId_ProdutosVariedades", IdArtigosnaListadeCompras[i]);
                                    SqlDataReader dr4 = comandoProcurarAtributosdoArtigo.ExecuteReader();
                                    while (dr4.Read())
                                    {
                                        ItemdoCarrodeCompras item = new ItemdoCarrodeCompras(Int32.Parse(dr4["Id_Produtos"].ToString()), Int32.Parse(dr4["Id_ProdutosVariedades"].ToString()), dr4["Nome"].ToString(), dr4["Marca"].ToString(), dr4["Quantidade"].ToString(), float.Parse(dr4["PrecoTotal"].ToString()), Int32.Parse(dr4["Unidades"].ToString()));
                                        lista.additem(item);
                                    }
                                    dr4.Close();
                                }
                                Session["ListadeCompras"] = lista;
                            }
                            Response.Redirect("Produtos.aspx");
                        }
                        //Se a palavra-passe estiver errada
                        else
                        {
                            if (Session["PasswordsErradas"] == null)
                            {
                                Session["PasswordsErradas"] = 1;
                            }
                            else
                            {
                                Session["PasswordsErradas"] = Int32.Parse(Session["PasswordsErradas"].ToString()) + 1;
                            }
                            //Inserir a tentativa de login
                            String     InserirTentativadeLogin        = "******";
                            SqlCommand comandoInserirTentativadeLogin = new SqlCommand(InserirTentativadeLogin, con);
                            comandoInserirTentativadeLogin.Parameters.AddWithValue("@FKId_Contas", Id_Contas);
                            comandoInserirTentativadeLogin.ExecuteNonQuery();
                            ///Ver as 10 últimas tentativas de login desta conta, nas últimas 24 horas
                            String     ProcurarTentativadeLogin        = "******";
                            SqlCommand comandoProcurarTentativadeLogin = new SqlCommand(ProcurarTentativadeLogin, con);
                            comandoProcurarTentativadeLogin.Parameters.AddWithValue("@Email", TextBoxEmail.Text);
                            DateTime DatadeValidadedaContagem = DateTime.Now.AddDays(-1);
                            comandoProcurarTentativadeLogin.Parameters.AddWithValue("@Data", DatadeValidadedaContagem);
                            SqlDataReader dr3 = comandoProcurarTentativadeLogin.ExecuteReader();
                            int           numerodetentativassemsucesso = 0;
                            while (dr3.Read())
                            {
                                if (Int16.Parse(dr3["Autenticado"].ToString()) != 1)
                                {
                                    numerodetentativassemsucesso++;
                                }
                                else
                                {
                                    numerodetentativassemsucesso -= 10;
                                }
                            }
                            dr3.Close();
                            //Se a conta tiver sido vítima de 10 tentativas de login erradas, seguidas e num período de 24 horas, bloqueá-la
                            if (numerodetentativassemsucesso == 10)
                            {
                                //Inserir o bloqueamento da conta na base de dados
                                String     InserirBloqueio        = "INSERT INTO ContasBloqueios (FKId_Contas, Data, Estado) VALUES (@Id_Contas, @Data, @Estado)";
                                SqlCommand comandoInserirBloqueio = new SqlCommand(InserirBloqueio, con);
                                comandoInserirBloqueio.Parameters.AddWithValue("@Id_Contas", Id_Contas);
                                comandoInserirBloqueio.Parameters.AddWithValue("@Data", DateTime.Now);
                                comandoInserirBloqueio.Parameters.AddWithValue("@Estado", 1);
                                comandoInserirBloqueio.ExecuteNonQuery();
                                //Inserir o código associado ao bloqueio na base de dados, confirmando que este não se repete com qualquer outro código existente
                                GeradordeCodigos Gerador             = new GeradordeCodigos();
                                string           CodigodeConfirmacao = "";
                                int CodigosEncontrados = 1;
                                do
                                {
                                    CodigodeConfirmacao = Gerador.GerarCodigo(50);
                                    String     ProcurarporCodigodeConfirmacao        = "SELECT COUNT(*) FROM ContasCodigosdeConfirmacao WHERE CodigodeConfirmacao=@CodigodeConfirmacao";
                                    SqlCommand comandoProcurarporCodigodeConfirmacao = new SqlCommand(ProcurarporCodigodeConfirmacao, con);
                                    comandoProcurarporCodigodeConfirmacao.Parameters.AddWithValue("@CodigodeConfirmacao", CodigodeConfirmacao);
                                    CodigosEncontrados = Convert.ToInt32(comandoProcurarporCodigodeConfirmacao.ExecuteScalar());
                                } while (CodigosEncontrados != 0);
                                try
                                {
                                    //Enviar o código para o e-email associado à conta bloqueada
                                    SmtpClient smtpClient = new SmtpClient("smtp-mail.outlook.com", 25);
                                    smtpClient.EnableSsl             = true;
                                    smtpClient.Port                  = 587;
                                    smtpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
                                    smtpClient.UseDefaultCredentials = false;
                                    smtpClient.Credentials           = new NetworkCredential("*****@*****.**", "abc123IO");
                                    smtpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
                                    MailMessage mail = new MailMessage("*****@*****.**", "*****@*****.**");
                                    mail.Subject = "A sua conta foi bloqueada.";
                                    Uri uri = new Uri("http://*****:*****@FKId_Contas,@CodigodeConfirmacao, 1, 'false', GETDATE())";
                                    SqlCommand comandoInserirCodigodeConfirmacao = new SqlCommand(InserirCodigodeConfirmacao, con);
                                    comandoInserirCodigodeConfirmacao.Parameters.AddWithValue("@FKId_Contas", Id_Contas);
                                    comandoInserirCodigodeConfirmacao.Parameters.AddWithValue("@CodigodeConfirmacao", CodigodeConfirmacao);
                                    comandoInserirCodigodeConfirmacao.ExecuteNonQuery();
                                    ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('Esta conta foi bloqueada devido a demasiadas tentativas de login seguidas e sem sucesso. Enviámos-lhe um e-mail para poder desbloquear a sua conta.');", true);
                                }
                                catch
                                {
                                    //Quando a conta de e-mail [email protected] é bloqueada por suspeitas de spam, o programa entra no catch. É um problema básico em que me basta fazer login e confirmar a minha identidade
                                    //por telemóvel.
                                    ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('Esta conta foi bloqueada devido a demasiadas tentativas de login seguidas e sem sucesso. Por outro lado não foi possível enviar-lhe um e-mail para poder desbloquear a sua conta, iremos enviar-lhe assim que possível. Pedimos desculpas pelo incómodo.');", true);
                                }
                            }
                            else
                            {
                                ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('A palavra-passe está errada.');", true);
                            }
                        }
                    }
                }
            }
        }
    }
 protected void ButtonEnviarConfirmacao_Click(object sender, EventArgs e)
 {
     if (ProcurarEmail(TextBoxEnviarConfirmacao.Text))
     {
         SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString);
         con.Open();
         //Verificar que a conta ainda não foi confirmada
         String     ProcurarConfirmacaodaConta        = "SELECT COUNT(*) FROM Contas WHERE Email=@Email and Confirmada='false'";
         SqlCommand comandoProcurarConfirmacaodaConta = new SqlCommand(ProcurarConfirmacaodaConta, con);
         comandoProcurarConfirmacaodaConta.Parameters.AddWithValue("@Email", TextBoxEnviarConfirmacao.Text);
         int temp = Int32.Parse(comandoProcurarConfirmacaodaConta.ExecuteScalar().ToString());
         if (temp == 0)
         {
             ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('A conta associada a este endereço de e-mail já foi confirmada.');", true);
         }
         else
         {
             String     GetIddaConta        = "SELECT Id_Contas FROM Contas WHERE Email=@Email";
             SqlCommand comandoGetIddaConta = new SqlCommand(GetIddaConta, con);
             comandoGetIddaConta.Parameters.AddWithValue("@Email", TextBoxEnviarConfirmacao.Text);
             int IddaConta = Int32.Parse(comandoGetIddaConta.ExecuteScalar().ToString());
             //Verificar que não se enviou nenhum e-mail à mesma conta, com o mesmo objetivo de confirmar a conta, à menos de 5 minutos
             String     EvitarSpamdeEmail        = "SELECT COUNT(*) FROM ContasCodigosdeConfirmacao WHERE FKId_Contas=@FKId_Contas AND Objetivo='0' AND Usado='false' AND Data>DATEADD(minute, -5, GETDATE())";
             SqlCommand comandoEvitarSpamdeEmail = new SqlCommand(EvitarSpamdeEmail, con);
             comandoEvitarSpamdeEmail.Parameters.AddWithValue("@FKId_Contas", IddaConta);
             int temp2 = Convert.ToInt32(comandoEvitarSpamdeEmail.ExecuteScalar());
             if (temp2 > 0)
             {
                 ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('Espere 5 minutos antes de pedir um novo e-mail de confirmação.');", true);
             }
             else
             {
                 //Gerar o código de confirmação, certificando-se de que o código não existe na base de dados
                 GeradordeCodigos Gerador             = new GeradordeCodigos();
                 string           CodigodeConfirmacao = "";
                 int CodigosEncontrados = 1;
                 do
                 {
                     CodigodeConfirmacao = Gerador.GerarCodigo(50);
                     //Verificar que o código de confirmação não existe, o que é extremamente improvável
                     String     ProcurarporCodigodeConfirmacao        = "SELECT COUNT(*) FROM ContasCodigosdeConfirmacao WHERE CodigodeConfirmacao=@CodigodeConfirmacao";
                     SqlCommand comandoProcurarporCodigodeConfirmacao = new SqlCommand(ProcurarporCodigodeConfirmacao, con);
                     comandoProcurarporCodigodeConfirmacao.Parameters.AddWithValue("@CodigodeConfirmacao", CodigodeConfirmacao);
                     CodigosEncontrados = Convert.ToInt32(comandoProcurarporCodigodeConfirmacao.ExecuteScalar());
                 } while (CodigosEncontrados != 0);
                 //Enviar o código de confirmação para o e-email
                 SmtpClient smtpClient = new SmtpClient("smtp-mail.outlook.com", 25);
                 smtpClient.Port                  = 587;
                 smtpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
                 smtpClient.UseDefaultCredentials = false;
                 smtpClient.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "abc123IO");
                 smtpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
                 smtpClient.EnableSsl             = true;
                 MailMessage mail = new MailMessage("*****@*****.**", "*****@*****.**");
                 mail.Subject = "Confirme a sua conta.";
                 Uri uri = new Uri("http://*****:*****@FKId_Contas and Objetivo='0'";
                     SqlCommand comandoInvalidarCodigodeConfirmacao = new SqlCommand(InvalidarCodigodeConfirmacao, con);
                     comandoInvalidarCodigodeConfirmacao.Parameters.AddWithValue("@FKId_Contas", IddaConta);
                     comandoInvalidarCodigodeConfirmacao.ExecuteNonQuery();
                     //Inserir o código de confirmação
                     String     InserirCodigodeConfirmacao        = "INSERT INTO ContasCodigosdeConfirmacao (FKId_Contas, CodigodeConfirmacao, Objetivo, Usado, Data) values (@FKId_Contas, @CodigodeConfirmacao, 0, 'false', GETDATE())";
                     SqlCommand comandoInserirCodigodeConfirmacao = new SqlCommand(InserirCodigodeConfirmacao, con);
                     comandoInserirCodigodeConfirmacao.Parameters.AddWithValue("@FKId_Contas", IddaConta);
                     comandoInserirCodigodeConfirmacao.Parameters.AddWithValue("@CodigodeConfirmacao", CodigodeConfirmacao);
                     comandoInserirCodigodeConfirmacao.ExecuteNonQuery();
                     ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('E-mail enviado.');", true);
                 }
                 catch
                 {
                     //Caso não seja possível enviar o e-mail, avisar o utilizador.
                     //Quando a conta de e-mail [email protected] é bloqueada por suspeitas de spam, o programa entra no catch. É um problema básico em que me basta fazer login e confirmar a minha identidade
                     //por telemóvel.
                     ClientScript.RegisterStartupScript(this.GetType(), "Aviso", "alert('De momento não é possível enviar-lhe um e-mail de confirmação, por favor tente mais tarde. Pedimos desculpas pelo incómodo.');", true);
                 }
             }
         }
         con.Close();
     }
 }