Skip to main content
 首页 » 编程设计

c#之不使用凭据 C# 发送邮件

2024年06月03日40bluestorm

大家。 我需要使用 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); 

我尝试过不使用凭据,使用空字符串作为密码,但似乎没有任何效果。

我是否忘记了任何特殊参数或配置?

请您参考如下方法:

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

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); 
} 

我在这里假设您尝试使用的服务器支持无需身份验证的邮件中继,这应该排除 Internet 上任何合理的配置。