.net 不使用凭据发送邮件C#

t0ybt7op  于 2023-01-22  发布在  .NET
关注(0)|答案(2)|浏览(118)

每个人。我需要使用C#发送一封无回复邮件。网络管理员告诉我SMTP服务器配置为发送此类邮件(使用任何没有密码的帐户)。我正在尝试:

System.Net.NetworkCredential credencials = new System.Net.NetworkCredential();
credencials.UserName = "mail@domain.com";
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();
mail.To.Add(email);
mail.From = new MailAddress("mail@domain.com");
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = message;
SmtpServer.Host = "smtpserver";
SmtpServer.Port = 25;
SmtpServer.Credentials = credencials;
SmtpServer.EnableSsl = true;
SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
SmtpServer.Send(mail);

我试过不使用凭据,使用空字符串作为密码,但似乎没有工作。
我是否忘记了任何特殊参数或配置?

lf5gs5x2

lf5gs5x21#

我认为提供用户名和在端口25上使用SSL的组合意味着尝试了身份验证但失败了,并且尝试了错误的协议协商。如果您更改了以下代码,会发生什么?

MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();
mail.To.Add(email);
mail.From = new MailAddress("mail@domain.com");
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = message;
SmtpServer.Host = "smtpserver";
SmtpServer.Port = 25;
SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
try {
    SmtpServer.Send(mail);
}
catch (Exception ex) {
    Debug.WriteLine("Exception Message: " + ex.Message);
    if (ex.InnerException != null)
        Debug.WriteLine("Exception Inner:   " + ex.InnerException);
}

我在这里假设您尝试使用的服务器支持邮件中继而不需要身份验证,这应该排除了互联网上任何理智的配置。

pkmbmrz7

pkmbmrz72#

尝试删除此行,查看更改后收到的错误:

SmtpServer.Credentials = credencials;

最小化你设置的属性的数量。我认为你需要的最小值是示例化smtpclient和mailmessage。
最小值:

SmtpClient smtp = new SmtpClient("smtpserver");
    MailMessage mail = new MailMessage();

设置:邮件。收件人邮件。发件人邮件。主题邮件。正文

smtp.Send(mail);

相关问题