使用SMTP作为IP地址发送邮件时,无法解析远程名称

Lee*_*ett 11 .net c# windows smtpclient

MailMessage message = new MailMessage();
message.Subject = "test";
message.Body = "test";
message.To.Add("test@gmail.com");
message.From = new MailAddress("bob@internalhost.com");
SmtpClient smtp = new SmtpClient();
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Host = "172.22.0.20";
smtp.Port = 25;
smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)

知道为什么我可能会收到错误

无法解析远程名称.

显然,由于我已经指定了IP地址,因此无需解析.我可以在端口25上ping IP甚至telnet并成功发送电子邮件.但是,我无法发送电子邮件.

我跑了一个wireshark跟踪,看起来没有任何流量发送到172.22.0.20

Zul*_*lil 8

我使用此代码,并在我的最终工作正常确保您使用正确的IP地址和端口号.我认为您的端口号不正确.(打开您的电子邮件ID并检查邮件配置)

MailMessage mail = new MailMessage("bob@internalhost.com", "Toemai@email.com");
mail.Subject = "Subject";
mail.IsBodyHtml = true;
mail.Body = "this is email body";

SmtpClient client = new SmtpClient("172.22.0.20");
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("bob@internalhost.com", "password");
client.Port = 25;

client.Send(mail);
Run Code Online (Sandbox Code Playgroud)


小智 0

我看到的问题是这一行:

smtp.Host = 172.22.0.20; 
Run Code Online (Sandbox Code Playgroud)

smtp.Host 需要字符串。所以,应该是smtp.Host = "172.22.0.20";除此之外,请添加下面的代码,以便我们可以看到错误

try 
{
    smtp.Send(mail); 
}
catch (Exception e) 
{
    Debug.WriteLine("Exception Message: " + e.Message);
}
Run Code Online (Sandbox Code Playgroud)