Asp.net mvc 4发送邮件

时间:2013-07-11 19:56:30

标签: asp.net-mvc-4

我正在使用ASP.NET mvc 4.我正在尝试使用smtp client发送电子邮件。我现在正在使用localhost。但是,我的代码会抛出“无法连接到远程服务器”的错误。任何人都可以帮我解决我做错的事吗?

我的代码:

using System.Net.Mail;
using System.Net.Mime





  MailMessage msg = new MailMessage();
            SmtpClient client = new SmtpClient();


            try
            {
                msg.From = new MailAddress("from@gmail.com", "Display name");
                msg.To.Add("rt@gmail.com");
                msg.Subject = "Password";
                msg.Body = "This is the test";
                msg.Priority = MailPriority.High;
                msg.IsBodyHtml = true;

                //the actual email and to send the picture in the image.........

              //  return "reached here";
                string str = "<html><body><h1>picture</h1></br></body></html>";
                AlternateView av = AlternateView.CreateAlternateViewFromString(str, null, MediaTypeNames.Text.Html);
              //  LinkedResource lr = new LinkedResource("C:/RANJAN'S/PROJECTS/Darn/Darn_3/darnCoupon/darnCoupon/Images/Carousel/carousel_1.jpg", MediaTypeNames.Image.Jpeg);
              //  lr.ContentId = "image1";
              //  av.LinkedResources.Add(lr);
                msg.AlternateViews.Add(av);



                client.Host = "smtp.gmail.com";
                client.Port = 587;

                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Credentials = new System.Net.NetworkCredential("rp@gmail.com", "Password");
                client.UseDefaultCredentials = false;
                client.EnableSsl = true;

                client.Send(msg);

                return "reached here toooooooo";

              //  return msg.ToString();

            }
            catch (Exception ex)
            {

                return ex.InnerException.Message;

            }

            return "nothing happpened";


        }

My web.COnfig






<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=darnCoupon_db;MultipleActiveResultSets=True ;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\darnCoupon_db.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>


  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="rp@gmail.com">
        <network defaultCredentials="true" host="smtp.gmail.com" port="587" userName="rp@gmail.com" password="Password"/>

      </smtp>
    </mailSettings>  
  </system.net>




  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

2 个答案:

答案 0 :(得分:1)

我建议你从这里下载并安装Smtp4Dev(http://smtp4dev.codeplex.com/)。安装完成后,无论您使用smtp服务器设置,都可以判断邮件是否已发送。一旦确定问题的根源不是您的代码,那么您就可以看到smtp服务器设置发生了什么。

答案 1 :(得分:0)

试试这段代码。我希望它能像你期望的那样发挥作用。

SmtpClient client = new SmtpClient();
            MailMessage msg = new MailMessage();                
            MailAddress to = new MailAddress("client email address");
            MailAddress from = new MailAddress("Your Email Address");
            msg.IsBodyHtml = true;
            msg.Subject = "Mail Title";
            msg.To.Add(to);
            msg.Body = "Your message";
            msg.From = from;
            client.Send(msg);

在配置部分下的web.config文件中,您需要编写邮件帐户的凭据信息

    <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="smtp.gmail.com" port="587" userName="your email address" password="your password" defaultCredentials="false" enableSsl="true" />
      </smtp>
    </mailSettings>
  </system.net>