我需要从我编写此代码的程序中发送电子邮件,但它不起作用,错误是


  “服务于SMTP的客户端请求或连接的安全性。服务器的响应时间: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("[email protected]", "xxx");
        mail.From = new MailAddress("[email protected]");
        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());
    }
}


我按照建议更改了代码,但遇到了新错误


  “ d'lai d'attente de l'opération有效期”


已翻译:


  “交易超时已过期”


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("[email protected]", "xxxxx");
            SmtpServer.UseDefaultCredentials = false;

        mail.From = new MailAddress("[email protected]");
        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());
    }
}

最佳答案

您必须在调用SmtpServer.EnableSsl = true;之前设置SmtpServer.Send(mail);才能生效。

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

Google说,当您使用端口587时,需要使用TLS,如here所述。因此,也许您考虑使用端口465,该端口指示使用SSL,而不是587-TLS端口。

Here is another post很好地说明了如何通过gmail发送电子邮件的示例。这也很清楚,您需要在分配实际凭据之前设置UseDefaultCredentials = false

关于c# - 如何从C#程序发送电子邮件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29774401/

10-17 00:42