如何使用asp.net和html页面发送电子邮件

时间:2017-09-20 10:57:17

标签: javascript jquery html asp.net

我有一个contact.html页面,其中包含用于用户名,电子邮件,电话,主题,消息和提交按钮的textboxex页面。

<form class="contact-page-form-1">
      <div class="row clearfix">
          <div class="col-md-6 col-sm-6 col-xs-12 form-group">
              <input type="text" name="username" placeholder="Your Name*" id="username" required>
          </div>

          <div class="col-md-6 col-sm-6 col-xs-12 form-group">
                <input type="email" name="email" placeholder="Email Address*" id="email" required>
          </div>

          <div class="col-md-6 col-sm-6 col-xs-12 form-group">
                <input type="text" name="phone" placeholder="Phone Num" id="phone" required>
          </div>

          <div class="col-md-6 col-sm-6 col-xs-12 form-group">
                <input type="text" name="subject" placeholder="Subject" id="subject" required>
          </div>

          <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 form-group">
                <textarea name="message" placeholder="Your Message..." id="message"></textarea>
          </div>

          <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 form-group">
                  <button class="theme-btn btn-style-one" onclick="javascript:SendMail()" type="submit" name="submit-form">Send Message</button>
          </div>

      </div>
</form>

当我们点击按钮时,调用了javascript函数,其中我调用了一个在VisionMail.aspx中的webmethod。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script type="text/javascript">
    function SendMail() {
        var uname = document.getElementById("username").value;
        var email = document.getElementById("email").value;
        var phone = document.getElementById("phone").value;
        var subject = document.getElementById("subject").value;
        var message = document.getElementById("message").value;
        var URL = "VisionMail.aspx?uname=" + uname + "&email=" + email + "&ph=" + phone + "&sub=" + subject + "&msg=" + message + "&count=India";
                    window.open(URL);
    }
</script>  

用于发送邮件的我的WebMethod在VisionMail.aspx中如下: -

protected void Page_Load(object sender, EventArgs e)
    {
        string uname = Request.QueryString["uname"].ToString();
        string email = Request.QueryString["email"].ToString();
        string phone = Request.QueryString["ph"].ToString();
        string subject = Request.QueryString["sub"].ToString();
        string message = Request.QueryString["msg"].ToString();
        string country = Request.QueryString["count"].ToString();

        string close = @"<script type='text/javascript'>
                            window.returnValue = true;
                            window.close();
                            </script>";


        using (MailMessage mail = new MailMessage())
        {
            mail.From = new MailAddress("abc@gmail.com");
            mail.To.Add("info@xyz.com");
            mail.Subject = subject;
            mail.Body = "Mr. " + uname + "<br/>" + "Email ID : " + email + " Phone No. " + phone + "<br/> <h4>He/She is Sending Message From Contact Page (" + country + "). <br/>" + message;
            mail.IsBodyHtml = true;

            using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
            {
                try
                {
                    smtp.Credentials = new NetworkCredential("abc@gmail.com", "abc123");
                    smtp.EnableSsl = true;
                    smtp.Send(mail);

                    base.Response.Write(close);
                }
                catch (Exception ex)
                {
                    base.Response.Write(close);
                }
            }
        }
    }

这个代码在本地系统上很好,邮件正在运行,但是当我在服务器上发布它不起作用时,当我点击按钮发送邮件时,邮件不会去,并且下载了webmethod所在的页面。有没有解决方案。

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码。

  

使用(SmtpClient smtp =新的SmtpClient(&#34; smtp.gmail.com&#34;))   {

     

试       {

  smtp.Credentials = new NetworkCredential("visioncomn@gmail.com", "visioncomptel123");

  smtp.EnableSsl = smtp.Port == 587 || smtp.Port == 465;

  smtp.Send(mail);

  base.Response.Write(close);
     

}     catch(Exception ex)     {          base.Response.Write(接近);     }   }