在Windows窗体中使用网络凭据发送的邮件无法正常工作

0 c# smtpclient winforms

我想做一个在C#windows应用程序中发送电子邮件的应用程序.我使用smtp服务器,但我不想设置网络凭据.所以我把它设置为true.但是我得到了错误.

SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应为:5.5.1需要身份验证.了解更多信息

这是代码:

SmtpClient oClient = new SmtpClient();
oClient.Host = "smtp.gmail.com";
oClient.Port = 25;
oClient.UseDefaultCredentials = true;
oClient.Credentials = new System.Net.NetworkCredential();
oClient.EnableSsl = true;
MailMessage oMail = new MailMessage();
oMail.To.Add(txtTo.Text.Trim());
oMail.From = new MailAddress("testmail@gmail.com");
oMail.Subject = txtSubject.Text;
oMail.Body = txtBody.Text;
oMail.IsBodyHtml = true;
oClient.Send(oMail);
MessageBox.Show("Mail Send");
Run Code Online (Sandbox Code Playgroud)

在这里我将主机设置为gmail.com,我需要使用所有电子邮件服务提供商发送和接收邮件.那么如何设置主机和端口?

use*_*620 5

gmail使用端口587

oClient.Port = 587;
Run Code Online (Sandbox Code Playgroud)

您可能还希望设置UseDefaultCredentials为false并明确声明用户名和密码.通过声明它是真的,您正尝试使用Windows凭据登录您的Gmail帐户.

oClient.UseDefaultCredentials = false;
oClient.Credentials = new NetworkCredential("email@gmail.com", "password");
Run Code Online (Sandbox Code Playgroud)

此外,在gmail安全性中,您需要允许不太安全的应用程序.

最后,您需要更改Mail.To的填充方式:

oMail.To.Add(new MailAddress(txtTo.Text.Trim()));
Run Code Online (Sandbox Code Playgroud)