如何从c#程序发送电子邮件?

时间:2015-04-21 13:59:27

标签: c#

我需要发送一封来自我的程序的电子邮件我写了这段代码,但它没有用,错误是

  

“Le serveur SMTP requiert uneconnexionsécuriséeouleclientn'étaitpasauthentifié.Laréponseduserveurétait:5.7.0必须首先发出STARTTLS命令.e2sm19845644wix.15 - gsmtp”

英文翻译:

  

“SMTP服务器需要安全连接或客户端未经过身份验证服务器响应为:5.7.0必须首先发出STARTTLS命令e2sm19845644wix.15 - gsmtp”

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

         SmtpServer.Credentials = new System.Net.NetworkCredential("oussabdalla@gmail.com", "xxx");
        mail.From = new MailAddress("oussabdalla@gmail.com");
        mail.To.Add(textBox4.Text);
        mail.Subject = "Attention";
        mail.Body = textBox1.Text + textBox2.Text + textBox3.Text + "est absent de " + comboBox5.SelectedValue + "a" + comboBox4.SelectedValue;

        SmtpServer.Port = 587;



        SmtpServer.Send(mail);
        SmtpServer.EnableSsl = true;
        MessageBox.Show("mail Send");

    }
    catch (Exception ex)  
    {
        MessageBox.Show(ex.ToString());
    }
}

我按照建议改变了我的代码并得到了新的错误

  

“Ledélaid'extede l'opérationoexpiré”

翻译:

  

“交易超时已过期”

private void button3_Click(object sender, EventArgs e)
{
        try
        {
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
            MailMessage mail = new MailMessage();
            SmtpServer.Credentials = new System.Net.NetworkCredential("oussabdalla@gmail.com", "xxxxx");
            SmtpServer.UseDefaultCredentials = false;

        mail.From = new MailAddress("oussabdalla@gmail.com");
        mail.To.Add(textBox4.Text);
        mail.Subject = "Attention";
        mail.Body = textBox1.Text + textBox2.Text + textBox3.Text + "est absent de " + comboBox5.SelectedValue + "a" + comboBox4.SelectedValue;

        SmtpServer.Port = 465;

        SmtpServer.EnableSsl = true;

        SmtpServer.Send(mail);

        MessageBox.Show("mail Send");

    }
    catch (Exception ex)  
    {
        MessageBox.Show(ex.ToString());
    }
}

2 个答案:

答案 0 :(得分:3)

在致电SmtpServer.EnableSsl = true;之前,您需要设置SmtpServer.Send(mail);才能生效。

由于我对法语的了解有限,我说该消息要求您使用STARTTLS使用安全连接。

Google表示,当您使用端口587时,您需要使用TLS,如here所述。因此,您可以考虑使用端口465,它表示使用SSL而不是587-TLS端口。

Here is another post在一个示例中解释了如何通过gmail发送电子邮件。它还清楚地表明,您需要在分配实际凭证之前设置UseDefaultCredentials = false

答案 1 :(得分:2)

try
            {
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
                mail.From = new MailAddress("fromeamilp@gmail.com");
                mail.To.Add("toemail@gmail.com");
                mail.Subject = "Subject of email...";
                mail.Body = "Body of email...";
                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential("gmailusername", "gmailpass");
                SmtpServer.EnableSsl = true;
                SmtpServer.Send(mail);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }