Man*_*pta 21 .net c# asp.net smtpclient
我无法使用smtp客户端发送邮件.这是代码:
SmtpClient client=new SmtpClient("Host");
client.Credentials=new NetworkCredential("username", "password");
MailMessage mailMessage = new MailMessage();
mailMessage.from="sender@gmail.com";
mailMessage.To.Add("recipient@gmail.com");
mailMessage.body="body";
mailMessage.subject="subject";
client.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)
问题是,当我在ASP.NET应用程序中使用此代码时,我不会收到任何邮件.在asp.net中,我将从邮件地址更改为NetworkCredential中给出的用户名,我收到邮件.
但是在C#windows应用程序中,即使发件人的电子邮件地址无效,我也可以收到电子邮件.
use*_*983 17
我发现在设置'UseDefaultCredentials = false'之前设置SmtpClient Credentials属性UseDefaultCredentials = false会导致忽略凭据.
失败:
SmtpClient smtp = new SmtpClient;
smtp.Credentials = new NetworkCredential("user","pass");
smtp.UseDefaultCredentials = false;
Run Code Online (Sandbox Code Playgroud)
作品:
SmtpClient smtp = new SmtpClient;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("user","pass");
Run Code Online (Sandbox Code Playgroud)
去搞清楚.
简短的回答是:不要使用 .net 的内部 SMTP 客户端类 - 使用 MailKit。
长答案:
[System.Obsolete("SmtpClient 及其网络类型设计不佳,我们强烈建议您使用https://github.com/jstedfast/MailKit和https://github.com/jstedfast/MimeKit代替")] 公共类SmtpClient:IDisposable
我故意没有复制粘贴此处文档中的示例,因为文档可能会随着时间的推移而发生变化,最好阅读 .
这意味着您的邮件服务器不允许邮件中继。您的邮件服务器仅允许您从经过身份验证的电子邮件 ID 作为用户名发送邮件。一般来说,这样做是为了防止邮件以经过验证的身份之外的其他身份发送。