System.Net.Mail.SmtpException{发送电子邮件失败.}

本文关键字:电子邮件 失败 Net Mail SmtpException System | 更新日期: 2023-09-27 17:57:52

client.Send(email);上保持中断和崩溃,并出现上述错误。四胞胎检查了一切。

这是我的代码:

private void submit_Click(object sender, RoutedEventArgs e)
{
    string from = "************@gmail.com";
    string to = "*******@sru.edu";
    string subject = "PSLM Test";
    string body = "PSLM Test";
    string server = "smtp.gmail.com";
    int port = 465;
    string username = "************";
    string password = "*******";
    SmtpClient client = new SmtpClient(server, port);
    client.Credentials = new NetworkCredential(username, password);
    MailMessage email = new MailMessage(from, to, subject, body);
    email.Attachments.Add(new Attachment(GlobalVariables.attachedFilePath));
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[0]));
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[1]));
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[2]));
    client.Send(email);
}

请问我做错了什么?

System.Net.Mail.SmtpException{发送电子邮件失败.}

Gmail SMTP端口是587,而不是465。您还需要将SmtpClient.EnableSsl属性设置为true

client.EnableSsl = true;

在设置新的网络凭据之前,可能需要将client.UseDefaultCredentials设置为false。但情况并非总是如此——我所知道的是,当其他选择都用尽时,这往往会奏效。

client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential(username, password);

由于您使用的是gmail,您需要在您的谷歌帐户安全设置中允许不太安全的应用程序。如果您使用的是双因素身份验证,您还需要创建一个特定于应用程序的密码,并在代码中使用该密码。

    SmtpClient client= new SmtpClient(server, port);
    client.Credentials = new System.Net.NetworkCredential(username, password);
    client.UseDefaultCredentials = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.EnableSsl = true;
    MailMessage email = new MailMessage(from, to, subject, body);
    email.Attachments.Add(new Attachment(GlobalVariables.attachedFilePath));
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[0]));
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[1]));
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[2]));
    client.Send(email);