Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从客户端应用程序发送电子邮件而不存储密码_C#_Security_Email - Fatal编程技术网

C# 从客户端应用程序发送电子邮件而不存储密码

C# 从客户端应用程序发送电子邮件而不存储密码,c#,security,email,C#,Security,Email,我的目标:从C#Windows窗体应用程序发送电子邮件(例如,支持请求、错误报告)。我知道如何在技术上做到这一点,但关键是: 为了在邮件服务器(如gmx、yahoo、own网站)上进行身份验证,我需要在应用程序(在客户端系统上运行)中存储登录详细信息。如果有人提取它或嗅探网络流量,他将有权访问我的电子邮件帐户。也许第二个威胁可以通过安全连接消除。但是,无论密码是否模糊,仍然可以从应用程序中获取密码 那么,是否有“安全”的概念使我能够从运行在客户端pc上的程序中发送电子邮件,而不需要以可访问的形式

我的目标:从C#Windows窗体应用程序发送电子邮件(例如,支持请求、错误报告)。我知道如何在技术上做到这一点,但关键是:

为了在邮件服务器(如gmx、yahoo、own网站)上进行身份验证,我需要在应用程序(在客户端系统上运行)中存储登录详细信息。如果有人提取它或嗅探网络流量,他将有权访问我的电子邮件帐户。也许第二个威胁可以通过安全连接消除。但是,无论密码是否模糊,仍然可以从应用程序中获取密码


那么,是否有“安全”的概念使我能够从运行在客户端pc上的程序中发送电子邮件,而不需要以可访问的形式存储密码,也不需要特殊的web服务?

我过去有这样一个要求,我们通过使用web服务发布消息来解决这个问题

例如,如果一个用户想要提交一个bug报告,它将被转换为一个web服务调用到我们的web服务器,然后它将被相应地转发

回答你的问题:
您无法隐藏邮件服务器。如果你的程序可以发送电子邮件,那么使用其他程序的用户也可以发送电子邮件。(web服务也是如此。)您可以使用开放式smtp服务器(smtp中继),但这只是自找麻烦。

如果您要向域发送邮件,邮件服务器是您的最终目的地,则无需验证发件人,您只需要在将邮件中继到另一个域时执行此操作。

您可以只允许通过Active directory身份验证的用户发送电子邮件。这将允许您在应用程序能够发送邮件之前,检查用户是否具有有效帐户,并且是否位于有效组“domain\MyMailSendUsers”中

如果您使用的是本地邮件服务器,还可以将其配置为仅允许来自特定资源的连接。如果您使用的是来自外部供应商(雅虎、谷歌等)的邮件,那么您将不得不存储用户名和密码,除了要求用户在每次发送时键入用户名和密码外,没有其他切实可行的方法,您可以将其存储在运行时变量中(并对其进行加密),以确保其安全