C# 无法分析MailKit主机名
我有这个方法来测试MailKit Send()函数,但调用Connect()方法时出错。“无法解析主机名”。我添加了一个简单的System.Net.Mail Send()调用,它使用相同的主机名正常工作。然而,MailKit失败了。我尝试了一种用IP地址替换主机名的解决方案,但在该路径上出现了一个证书错误。关于如何解决这个问题有什么想法吗 [somedomain]是虚构的,真实的域已被替换C# 无法分析MailKit主机名,c#,mailkit,C#,Mailkit,我有这个方法来测试MailKit Send()函数,但调用Connect()方法时出错。“无法解析主机名”。我添加了一个简单的System.Net.Mail Send()调用,它使用相同的主机名正常工作。然而,MailKit失败了。我尝试了一种用IP地址替换主机名的解决方案,但在该路径上出现了一个证书错误。关于如何解决这个问题有什么想法吗 [somedomain]是虚构的,真实的域已被替换 私有静态void SendMail() { Configuration oConfig=Configur
私有静态void SendMail()
{
Configuration oConfig=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var mailSettings=(MailSettingsSectionGroup)oConfig.GetSectionGroup(“system.net/mailSettings”);
if(mailSettings==null)
{
抛出新的NullReferenceException($“对象邮件设置不能为null”);
}
使用(var msClient=new System.Net.Mail.SmtpClient())
{
msClient.Send(“fromemail@somedomain.com", "toemail@somedomain.com“,”重要测试“,”测试电子邮件流程“);
}
//返回;
使用(var client=new SmtpClient())
{
var message=EmailGenerator.CreateSimpleMessage();
client.Connect(mailSettings.Smtp.Network.Host,mailSettings.Smtp.Network.Port);
客户端。发送(消息);
client.Disconnect(true);
}
}
我发现您需要将https://存储在带有主机名的web配置部分,或者在代码中对其进行修改。System.Net.Mail并不在意,但我能够使用Uri.TryCreate()复制错误
也许
somedomain
的真正价值很重要。它是否有一个特殊的字符,这是受PunyCode?您是否意外复制/粘贴了一个不可见的字符?两个字母可以换成一个连字吗?“像那样的东西是不会被注意到的。”托马斯韦勒说。不,我在这里修改的唯一内容是客户的真实域。@ThomasWeller,我知道了。我使用Uri.TryCreate()运行了另一个测试,但也失败了。System.Net.Mail似乎不关心TryCreate()和MailKit.Send()所关心的[协议]。添加行Uri.TryCreate($“https://{mailSettings.Smtp.Network.Host}”,UriKind.RelativeOrAbsolute,out Uri)后;在我能够成功发送的存储邮件主机之前添加[protocol]https://什么???这没有道理。
<mailSettings>
<smtp deliveryMethod="Network" from="noreply@somedomain.com">
<network host="mailrelay.somedomain.com" userName="" password="" port="25" />
</smtp>
</mailSettings>
private static void SendMail()
{
Configuration oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var mailSettings = (MailSettingsSectionGroup) oConfig.GetSectionGroup("system.net/mailSettings");
if (mailSettings == null)
{
throw new NullReferenceException($"object mailSettings cannot be null");
}
using (var msClient = new System.Net.Mail.SmtpClient())
{
msClient.Send("fromemail@somedomain.com", "toemail@somedomain.com", "Important Test", "Test Email Process");
}
//return;
using (var client = new SmtpClient())
{
var message = EmailGenerator.CreateSimpleMessage();
client.Connect(mailSettings.Smtp.Network.Host, mailSettings.Smtp.Network.Port);
client.Send(message);
client.Disconnect(true);
}
}
Uri.TryCreate($"https://{mailSettings.Smtp.Network.Host}", UriKind.RelativeOrAbsolute, out Uri uri);