在asp.net中发送邮件 - 也使用web配置

use*_*831 4 c# asp.net email

我正在尝试创建一个联系我们页面,用户点击提交并向我发送电子邮件,我看了一些示例,但他们似乎很难将他们的电子邮件凭据编码到代码中,我发现为了安全,你可以在webconfig文件中存储用户名和密码,下面是我的web配置代码和我的默认aspx.cs代码,任何人都可以帮我解决问题,这是我得到的错误

无法解析远程名称:'smtp.gmail.com,587'第45行:mailClient.Send(message);

这是我的appsettings和代码:

        <appSettings>
        <add key="PFUserName" value="myemail@gmail.com"/>
    <add key="PFPassWord" value="mypassword"/>
   <add key="MailServerName" value="smtp.gmail.com,587"/>
    </appSettings>


      using System;
   using System.Data;
   using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
      using System.Web.UI.WebControls.WebParts;
      using System.Web.UI.HtmlControls;
    using System.Net.Mail;
    using System.Web.Configuration;
  using System.Net;

 namespace WebApplication2 
        {
public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
    {
        SendMail(txtEmail.Text, txtComments.Text);
    }

    private void SendMail(string from, string body)
    {
        string Username = WebConfigurationManager.AppSettings["PFUserName"].ToString();
        string Password = WebConfigurationManager.AppSettings["PFPassWord"].ToString();
        string MailServer = WebConfigurationManager.AppSettings["MailServerName"].ToString();
        NetworkCredential cred = new NetworkCredential(Username, Password);
        string mailServerName = ("smtp.gmail.com,587");



        MailMessage message = new MailMessage(from, Username, "feedback", body);
        SmtpClient mailClient = new SmtpClient("smtp.gmail.com,587");
        mailClient.EnableSsl = true;

        mailClient.Host = mailServerName;
        mailClient.UseDefaultCredentials = false;
        mailClient.Credentials = cred;
        mailClient.Send(message);
        message.Dispose();

    }
}
Run Code Online (Sandbox Code Playgroud)

}

Sac*_*hin 8

您需要mailSettings在web.config中的配置中设置SMTP设置,如下所示

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="my@mail.com">
        <network host="smtp.gmail.com" port="587" userName="myemail@gmail.com" password="mypassword" />
      </smtp>
    </mailSettings>
  </system.net>
Run Code Online (Sandbox Code Playgroud)

您的服务器名称是smtp.gmail.com(从那里删除587).587是smtp正在使用的端口.所以把这个值放在host属性中.

C#代码:

SmtpClient smtpClient = new SmtpClient();
MailMessage mailMessage = new MailMessage();

mailMessage.To.Add(new MailAddress("sender@mail.com"));
mailMessage.Subject = "mailSubject";
mailMessage.Body = "mailBody";

smtpClient.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)