2014-11-09 106 views
0

在Windows中,您可以配置从控制面板中的邮件设置。我想知道的是信息存储在哪里?我需要编写一个可以发送电子邮件的应用程序,默认情况下我想使用这些设置。我认为,如果我用SmtpClient的参数构造函数会读他们,但是当我运行下面的代码:充分利用系统配置的SMTP服务器和主机在Windows

 var smtp = new SmtpClient(); 
     var host = smtp.Host; 
     var port = smtp.Port; 
     Console.WriteLine("{0}:{1}", host,port); 

我得到的主机为空(虽然端口号是25)如果我发送消息通过它,它抛出一个异常说“主机没有指定”。

我在哪里可以得到这个预配置的数据?

回答

0

你需要检查它的价值,否则这将是空之前,先设置属性。但是,默认情况下,端口是25.这就是为什么你看到25端口,即使没有指定。这里是SmtpClient对象的Host属性的定义。

 

    public string Host { set; get; } 
     Member of System.Net.Mail.SmtpClient 

    Summary: 
    Gets or sets the name or IP address of the host used for SMTP transactions. 

    Returns: 
    A System.Strin 

g that contains the name or IP address of the computer to use for SMTP transactions. 

尝试......

 

    var smtp = new SmtpClient(); 
    smtp.Host = "localhost"; //your mail server host name or ip address 
    var host = smtp.Host; 
    var port = smtp.Port; 
    Console.WriteLine("{0}:{1}", host,port); 

+0

对不起,如果我不清楚。当我知道SMTP服务器时,我知道如何发送电子邮件。我的问题是如何获得用户通过控制面板或通过Outlook配置的smtp主机。 – 2014-11-09 03:16:55

0

通常你需要的SMTP服务器名称的前手,并使用这个信息作为你的程序配置的一部分。您可以让用户从Outlook设置中获取此信息。我假设你已经知道这一点。不论出于什么原因要动态获得SMTP服务器名称,这个活动可以看作是黑客和可能带来安全问题的用户。如果某些程序自动使用您在Outlook中预配置的邮件服务器发送我们的一些电子邮件,您是否可以成像?

随着中说,一个实现这种方式是有一个第三方端口扫描程序作为你的过程中获得潜在的SMTP服务器名称的列表,并使用HELO命令验证SMTP存在的一部分。这应该有助于确定哪个IP是SMTP服务器。