在不存储密码的情况下从客户端应用程序发送电子邮件

时间:2008-11-23 15:31:47

标签: c# security email

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

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

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

3 个答案:

答案 0 :(得分:2)

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

例如,如果用户想要提交错误报告,则会将其转换为对我们的Web服务器的Web服务调用,然后将相应转发。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您可以允许仅由Active Directory身份验证用户发送电子邮件。这样您就可以在应用程序发送邮件之前检查用户是否拥有有效帐户并且位于有效的“domain \ MyMailSendUsers”组中。

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