Search code examples
emailgmailsystem.net.mail

sending an email from an forms Application (why dosen't it work)


enter image description hereI am trying to learn how to send a simple email with c# visual studio forms Application. (it could also be a console application for all I care). Here is the code I have(I don't see what's wrong with the code, it should work right?):

using System.Net.Mail;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

            mail.From = new MailAddress("(here is my email)");
            mail.To.Add("(here is my email)");
            mail.Subject = "toja";
            mail.Body = "ja";

            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("(here is my email)", "(here is my password)");
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);
            MessageBox.Show("mail Send");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

}

}


Solution

  • I use the following to send email from C# Forms application and it works. Maybe you should try adding the smtp.UseDefaultCredentials = false property and set the Credentials property?

    // Create our new mail message
    MailMessage mailMessage = new MailMessage();
    mailMessage.To.Add("toAddress");
    mailMessage.From = new MailAddress("fromAddress");
    mailMessage.Subject = "subject";
    mailMessage.Body = "body";
    
    // Set the IsBodyHTML option if it is HTML email
    mailMessage.IsBodyHtml = true;
    
    // Enter SMTP client information
    SmtpClient smtpClient = new SmtpClient("mail.server.address");
    NetworkCredential basicCredential = new NetworkCredential("username", "password"); 
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = basicCredential;
    smtpClient.Send(mailMessage);
    

    If using Gmail you can find the SMTP server information here https://support.google.com/a/answer/176600?hl=en. It looks like the address is smtp.gmail.com and the port is 465 for SSL or 587 for TLS. I would suggest you try using default port 25 first to make sure your email goes through, then adjust to a different port if you need to.