首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Asp.net Mvc-3发送电子邮件?

如何从Asp.net Mvc-3发送电子邮件?
EN

Stack Overflow用户
提问于 2012-03-09 14:04:15
回答 9查看 69.5K关注 0票数 36

如何使用c#通过mvc-3 asp.net发送邮件?

我必须发送一个忘记密码,我该怎么做呢?我的代码如下。

模型代码..

代码语言:javascript
复制
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace TelerikLogin.Models.ViewModels
{
    public class ForgotPassword
    {
        public int user_id { get; set; }
        public string user_login_name { get; set; }
        public string user_password { get; set; }

        [Required]
        [Display(Name="Email Address : ")]
        public string user_email_address { get; set; }
    }
}

控制器代码..

代码语言:javascript
复制
  public ActionResult ForgotPassword()
        {
            return View();
        }

        [HttpPost]
        public ActionResult ForgotPassword(string user_email_address)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MVC3\TelerikLogin\TelerikLogin\App_Data\Login.mdf;Integrated Security=True;User Instance=True");

            DataTable dt1 = new DataTable();

            string strQuery = string.Format("SELECT user_password FROM [user_master] WHERE user_email_address='{0}'",user_email_address);
            conn.Open();
            SqlDataAdapter da1 = new SqlDataAdapter(strQuery, conn);
            da1.Fill(dt1);
            conn.Close();

            if (dt1.Rows.Count > 0)
            {

MailMessage msg = new MailMessage();

            msg.From = new MailAddress("abc@gmail.com");
            msg.To.Add(user_email_address);
            msg.Subject = "Password";
            msg.Body = "Test1";
            msg.Priority = MailPriority.High;

            SmtpClient client = new SmtpClient();




            client.Credentials = new NetworkCredential("abc@gmail.com", "dip", "smtp.gmail.com");
            client.Host = "smtp.gmail.com";
            client.Port = 587;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.EnableSsl = true;
            client.UseDefaultCredentials = true;

            client.Send(msg);


               return RedirectToAction("About", "Home");
            }
            return View();
        }

在这里我通过输入的电子邮件地址从数据库中获取了用户的密码。

查看代码..

代码语言:javascript
复制
<% using (Html.BeginForm("ForgotPassword", "Account", FormMethod.Post))
   { %>

   <%: Html.LabelFor(m => m.user_email_address) %>
   <%: Html.TextBox("user_email_address")%>
      <%: Html.ValidationSummary(true) %>

<input type="submit" value="Submit"/>

   <%} %>

它在这些行上显示了一个错误

代码语言:javascript
复制
 client.Send(msg);

错误消息是:

代码语言:javascript
复制
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. x1sm1264662igc.16

如何解决?提前感谢

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-03-09 14:09:17

导入System.Net.Mail名称空间。

代码如下所示:

代码语言:javascript
复制
MailMessage mail = new MailMessage();

SmtpClient smtpServer = new SmtpClient("smtp.gmail.com");
smtpServer.Credentials = new System.Net.NetworkCredential("userName", "password");
smtpServer.Port = 587; // Gmail works on this port

mail.From = new MailAddress("myemail@gmail.com");
mail.To.Add("recepient@gmail.com");
mail.Subject = "Password recovery";
mail.Body = "Recovering the password";

smtpServer.Send(mail);

附注:示例代码中存在SQL注入漏洞。使用带参数的SqlCommand对象,而不是String.Format()

与填充DataSet相比,使用SqlDataReader检查记录的效率要高得多。

票数 69
EN

Stack Overflow用户

发布于 2012-03-09 14:09:33

看一看MvcMailer

MvcMailer为你提供了一个用于MVC3/4的ActionMailer风格的电子邮件发送NuGet包。因此,你可以用ViewBag生成由你的ASP.NET母版页和视图组成的专业外观的电子邮件。

票数 16
EN

Stack Overflow用户

发布于 2012-07-27 18:20:34

你可以用这个。

代码语言:javascript
复制
    public void SendEmail(string address, string subject, string message)
    {
        string email = "-your-id-@gmail.com";
        string password = "put-your-GMAIL-password-here";

        var loginInfo = new NetworkCredential(email, password);
        var msg = new MailMessage();
        var smtpClient = new SmtpClient("smtp.gmail.com", 587);

        msg.From = new MailAddress(email);
        msg.To.Add(new MailAddress(address));
        msg.Subject = subject;
        msg.Body = message;
        msg.IsBodyHtml = true;

        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = loginInfo;
        smtpClient.Send(msg);
    }
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9629647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档