C# 无法分析MailKit主机名

C# 无法分析MailKit主机名,c#,mailkit,C#,Mailkit,我有这个方法来测试MailKit Send()函数,但调用Connect()方法时出错。“无法解析主机名”。我添加了一个简单的System.Net.Mail Send()调用,它使用相同的主机名正常工作。然而,MailKit失败了。我尝试了一种用IP地址替换主机名的解决方案,但在该路径上出现了一个证书错误。关于如何解决这个问题有什么想法吗 [somedomain]是虚构的,真实的域已被替换 私有静态void SendMail() { Configuration oConfig=Configur

我有这个方法来测试MailKit Send()函数,但调用Connect()方法时出错。“无法解析主机名”。我添加了一个简单的System.Net.Mail Send()调用,它使用相同的主机名正常工作。然而,MailKit失败了。我尝试了一种用IP地址替换主机名的解决方案,但在该路径上出现了一个证书错误。关于如何解决这个问题有什么想法吗

[somedomain]是虚构的,真实的域已被替换


私有静态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);