首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亲Asp.net书中的例子?

亲Asp.net书中的例子?
EN

Stack Overflow用户
提问于 2011-03-11 17:25:27
回答 3查看 351关注 0票数 1

我正在研究partyInvities (第一个asp.net mvc应用程序)在Pro Asp.Net图书上的示例。

当我试图向聚会组织者发送电子邮件时,我收到一个错误,上面说没有指定smtp主机。我怎么才能把它弄对?这是我的代码和错误。

代码语言:javascript
复制
//code guestresponse

 public class GuestResponse
    {
    [Required(ErrorMessage="* Please Enter Your Name")]
    public string Name { get; set; }

    [Required(ErrorMessage="* Please Enter Your Email Id")]
     [RegularExpression(".+\\@.+\\...+",ErrorMessage=" * Please Enter Valid Email Id")]
    public string Email {get; set; }

     [Required(ErrorMessage = "* Please Enter Your Phone Number")]
    public string Phone { get; set; }

     [Required(ErrorMessage = "* Please Specify Whether You Will Attend or Not")]
    public bool? WillAttend { get; set; }


     private MailMessage BuildMailMessage()
     {
         var message = new StringBuilder();

         message.AppendFormat("Date: {0: yyyy-MM-dd hh:mm}\n", DateTime.Now);
         message.AppendFormat("RSVP from : {0}\n", Name);
         message.AppendFormat("Email: {0}\n", Email);
         message.AppendFormat("Phone: {0}\n", Phone);
         message.AppendFormat("Can Come: {0}\n", WillAttend.Value ? "yes" : "No");

         return new MailMessage(
             "rsvps@example.com", "party@example.com", Name + (WillAttend.Value ? "will attend" : "Won't attend"), message.ToString()); //From, To, Subject, Body
     }

     public void Submit()
     { 
         using (var smtpClient= new SmtpClient())
         using (var mailMessage = BuildMailMessage())
         {
             smtpClient.Send(mailMessage);
         }

     }


     }

//web配置

代码语言:javascript
复制
<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="smtp.example.com"/>


      </smtp>
    </mailSettings>
  </system.net>
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

    <!--
        Enabling request validation in view pages would cause validation to occur
        after the input has already been processed by the controller. By default
        MVC performs request validation before a controller processes the input.
        To change this behavior apply the ValidateInputAttribute to a
        controller or action.
    -->
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

//错误

“/”应用程序中的

服务器错误。未指定SMTP主机。描述:在执行当前web请求时发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。

异常详细信息: System.InvalidOperationException:未指定SMTP主机。

源错误:

第49行:{

第50行: smtpClient.Send(mailMessage);

第51行:}

第52行:

第53行:}

EN

回答 3

Stack Overflow用户

发布于 2011-03-11 17:27:13

我怎么才能把它弄对?

为了能够发送电子邮件,您需要一个SMTP服务器。如果您没有SMTP服务器设置,您可以将以下内容放入您的web.config中以进行调试:

代码语言:javascript
复制
<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory pickupDirectoryLocation="c:\email"/>
            <network host="localhost"/>
        </smtp>
    </mailSettings>
</system.net>

现在,所有的电子邮件将存储在c:\emails文件夹中,而不是被发送,这样您就可以检查您的代码是否正常工作。

至于配置真正的SMTP服务器,这是您在Serverfault上可能会问的一个问题,因为它是StackOverflow的非主题。

票数 3
EN

Stack Overflow用户

发布于 2011-10-22 10:56:01

我也有过同样的问题,并得以解决。问题是,当您更改Web.config中的代码并保存它时,如果仍然有带有错误消息的网页运行以及Visual中可能运行的其他内容,则实际上并不是在保存它。

所以要修复它

  1. 关闭所有网页。
  2. 关闭Visual
  3. ,返回VS并检查Web.config文件。您会注意到它中没有mailSettings代码。
  4. 添加了mailSettings代码并再次运行。现在一切都会好起来的。
票数 2
EN

Stack Overflow用户

发布于 2013-09-04 01:45:57

我也有同样的问题,并在这里尝试了解决方案。什么都没用。然后,我看到视图文件夹中有一个web.config,根文件夹中也有一个。确保您正在修改根文件夹web.config。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5276199

复制
相关文章

相似问题

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