Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sending mail in asp.net-also using web config

Tags:

c#

email

asp.net

i am tryiung to create a contact us page ,where the user clicks submit and sends an email to me, i looked at some examples, but they seem to be hard coding their email credentials into the code, i found out that for security m you can store the username and password in the webconfig file, below is my web config code and my default aspx.cs code, could anybody please help me solve the problem, this is the error i get

The remote name could not be resolved: 'smtp.gmail.com,587' Line 45: mailClient.Send(message);

Here is my appsettings and code:

        <appSettings>
        <add key="PFUserName" value="[email protected]"/>
    <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();

    }
}

}

like image 574
user3141831 Avatar asked Dec 20 '22 19:12

user3141831


1 Answers

You need to set SMTP setting inside the mailSettings configuration in web.config like this

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="[email protected]">
        <network host="smtp.gmail.com" port="587" userName="[email protected]" password="mypassword" />
      </smtp>
    </mailSettings>
  </system.net>

Your server name is smtp.gmail.com (remove the 587 from there). 587 is the port that smtp is using. So put this value in host property.

C# Code:

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

mailMessage.To.Add(new MailAddress("[email protected]"));
mailMessage.Subject = "mailSubject";
mailMessage.Body = "mailBody";

smtpClient.Send(mailMessage);
like image 134
Sachin Avatar answered Jan 03 '23 21:01

Sachin