如何通过C#发送电子邮件并获取发件人的电子邮件地址,而不让他从他的帐户发送邮件

时间:2016-05-16 18:58:21

标签: c# asp.net email smtp gmail

我有一个网站,用户必须发送有关他的汽车的某些信息,这些信息还包含他的电子邮件地址,以便我可以回复并向他发送消息。

正在发送此网站中的消息,我的代码是:

 protected void Button1_Click(object sender, EventArgs e)
    {   

        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");


            mail.To.Add("myemailaddress");


            SmtpServer.Port = 587;
            SmtpServer.UseDefaultCredentials = false;
           SmtpServer.Credentials = new System.Net.NetworkCredential("myemailaddress, "mypassword");

            mail.From = new MailAddress(TextBox3.Text);//gets the email address of the sender
            SmtpServer.EnableSsl = true;



            mail.Subject = "subject";
            mail.Body = "body";

            SmtpServer.Send(mail);



            string script = "alert(\"Email was sent!\");";
            ScriptManager.RegisterStartupScript(this, GetType(),
                                  "ServerControlScript", script, true);

        }

        catch (Exception ex)
        {
            // Response.Write(ex.ToString());
            string script = "alert(\"Email was not sent!\");";
            ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);


        }

这完全正常,但您可以看到邮件是从我的电子邮件地址发送到我的电子邮件地址而不是发件人的帐户。

所以除非我收到发件人发送的电子邮件地址,否则我无法回复。

问题是发件人可能会错误地写他的电子邮件,因为我无法回复他的邮件。我想我可以让他在第二个文本框中重新键入他的电子邮件地址,我会检查两个文本框是否包含相同的电子邮件地址,否则邮件将被发送,否则将无法发送。但那不是一个好主意;我该怎么做才能获得发件人的正确电子邮件地址?

我这样做是因为您知道Gmail需要身份验证,我不想让发件人提供密码。

1 个答案:

答案 0 :(得分:0)

出于安全原因,您无法使用GMail SMTP服务器更改自己以外的发件人地址。拥有自己的邮件服务器并进行适当配置或在发送给您的电子邮件正文中发送所有相关信息。您可以在正文中提供一个链接,用于打开新邮件以回复发件人,或者您可以创建一个简单的网页,将所有信息加载到表单中,也可以通过查询字符串传递,以发送允许修改的回复邮件。无论哪种方式,您都需要重新考虑您的策略。