加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – asp.net mvc 4将表单从站点发送到电子邮件

发布时间:2020-12-15 19:46:05 所属栏目:asp.Net 来源:网络整理
导读:我在我的mvc网站上有反馈表,看起来像 我需要将表单发送到电子邮件. 我为我的表单创建了模型 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ComponentTrading.Web.Models {public class FeedbackForm { p
我在我的mvc网站上有反馈表,看起来像

我需要将表单发送到电子邮件.

我为我的表单创建了模型

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;

 namespace ComponentTrading.Web.Models
 {
public class FeedbackForm
    {
    public string Name { get; set; } 
    public string Email { get; set; } 
    public string Phone { get; set; }
    public string Message { get; set; }
    }
}

我为我的表单Contacts.cshtml创建了视图

@using (Html.BeginForm("Contacts","Home",FormMethod.Post,new { id = "contact-form" }))
{
<fieldset>
    @Html.TextBoxFor(model => model.Name,new { @Value = Name })
    @Html.TextBoxFor(model => model.Email,new { @Value = "E-mail" })
    @Html.TextBoxFor(model => model.Phone,new { @Value = Phone })
    @Html.TextAreaFor(model => model.Message,new { @class = "img-shadow" })
    <input class="form-button" data-type="reset" value="Clear" />
    <input class="form-button" data-type="submit" type="submit" value="Send" />
</fieldset>     
}

我在我的控制器上写了这段代码

[HttpGet]
    public ActionResult Contacts()
    {
        FeedbackForm temp = new FeedbackForm();
        temp.Message = @Resources.Global.Contacts_Form_Message_Field;
        return View(temp);
    }


    [HttpPost]
    public ActionResult Contacts(FeedbackForm Model)
    {
        string Text = "<html> <head> </head>" +
        " <body style= " font-size:12px; font-family: Arial">"+
        Model.Message+
        "</body></html>";

        SendEmail("tayna-anita@mail.ru",Text);
        FeedbackForm tempForm = new FeedbackForm();
        return View(tempForm);
    }


    public static bool SendEmail(string SentTo,string Text)
    {
        MailMessage msg = new MailMessage();

        msg.From = new MailAddress("Test@mail.ru");
        msg.To.Add(SentTo);
        msg.Subject = "Password";
        msg.Body = Text;
        msg.Priority = MailPriority.High;
        msg.IsBodyHtml = true;

        SmtpClient client = new SmtpClient("smtp.mail.ru",25);



        client.UseDefaultCredentials = false;
        client.EnableSsl = false;
        client.Credentials = new NetworkCredential("TestLogin","TestPassword");
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        //client.EnableSsl = true;

        try
        {
            client.Send(msg);
        }
        catch (Exception)
        {
            return false;
        }
        return true;
    }

我的代码没有任何错误,
但当我按下发送按钮时,我没有收到电子邮件,我的表格也没有变得清晰.

我使用了Fiddler Web Debugger,我得到了Send-button click

我认为,这意味着没事,所以我不能忽视什么是错的?

解决方法

我已经复制粘贴了您的代码,并通过一些小的修改使其工作:

>我没有设置Credentials属性
>我修改了模板以删除@Value属性:

@ Html.TextBoxFor(model => model.Name)
@ Html.TextBoxFor(model => model.Email)
@ Html.TextBoxFor(model => model.Phone)

这些是我所做的唯一更改,我让您的应用程序正常工作.这让我相信SMTP客户端的配置一定有问题.你能检查一下client.Send(msg);引发的异常吗?我希望它会说一些关于无效网络凭证或类似的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读