我不明白为什么会出现这种类型的错误。
服务不可用,正在关闭传输通道。服务器响应是:无法连接到 SMTP 服务器
MailMessage objeto_mail = new MailMessage();
SmtpClient client = new SmtpClient();
client.Port = 25;
client.Host = "webmail.domain.com";
client.Timeout = 1000000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = true;
client.Credentials = new System.Net.NetworkCredential("[email protected]", "****");
objeto_mail.From = new MailAddress("[email protected]");
objeto_mail.To.Add(new MailAddress("[email protected]"));
objeto_mail.Subject = "Password Recover";
objeto_mail.Body = "Message";
client.Send(objeto_mail);
我认为您正在尝试连接到处于离线状态或不存在的主机上的电子邮件服务:
$ telnet webmail.domain.com 25
Trying 66.11.232.201...
telnet: connect to address 66.11.232.201: No route to host
$
请注意,这是在 my 系统上,该系统没有任何防火墙规则阻止端口 25 上的传出连接。
我能够使用 VPN 解决同样的问题。 公共类 MailService :IMailService { 私人只读电子邮件设置_emailSettings;
public MailService(IOptions<EmailSettings> emailSettings)
{
_emailSettings = emailSettings.Value;
}
public async Task<bool> SendEmailAsync(MailRequest mailRequest)
{
try
{
using (var message = new MailMessage())
{
message.From = new MailAddress(_emailSettings.Email, _emailSettings.DisplayName);
message.To.Add(new MailAddress(mailRequest.RecipientEmail));
message.Subject = mailRequest.Subject;
message.Body = mailRequest.Body;
message.IsBodyHtml = true; // Set to true if you're sending HTML email
using (var client = new SmtpClient(_emailSettings.Host, _emailSettings.Port))
{
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential(_emailSettings.Email, _emailSettings.Password);
client.EnableSsl = true;
await client.SendMailAsync(message);
Console.WriteLine("Email sent successfully.");
return true; // Email sent successfully
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error sending email: {ex.Message}");
return false; // Failed to send email
}
}
}