在C#中发送电子邮件而不配置用户名和密码

时间:2014-11-14 12:53:59

标签: c# asp.net email email-client

在某种情况下,我需要向用户发送电子邮件。但问题是我不想硬编码或配置我的密码和电子邮件用户名。如果有人知道PHP MAILER,它确实支持这个设施,其中一个人不需要提供他自己的用户名和密码来发送电子邮件。这些emals可以直接通过localhosts发送。但这不适用于c#

问题是我们可以在c#中做同样的事吗?如果是,那怎么样?因为我几乎到处都搜索过,但除了我们需要找到可以发送邮件而无需验证凭据的SMTP客户端之外,我会找到任何东西。

4 个答案:

答案 0 :(得分:2)

您始终可以保存config.file中加密的用户名和密码。

使用此命令加密配置中的任何部分 %windir%\ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis -pef" connectionStrings" C:\ documents and settings \ bob \ projects \ myproject

请注意,加密是特定于机器的。所以你必须在目标机器上做到这一点

有关MSDN的更多详细信息: http://msdn.microsoft.com/en-us/library/dtkwfdky(v=vs.100).aspx

答案 1 :(得分:0)

当然可以这样做,但就像你说的那样:

  

emals可以通过localhosts直接发送

在这种情况下,存在一个smtp服务器并预先配置为允许匿名访问/默认凭据。对于C#或任何.Net应用程序来说也是如此。如果您有一台SMTP服务器,它可以发送给您的机器的电子邮件,您可以去,不需要进行身份验证。

答案 2 :(得分:0)

您可以使用Windows身份验证,例如将凭据设置为CredentialCache.DefaultNetworkCredentials

SmtpClient smtpClient = new SmtpClient();
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;

答案 3 :(得分:0)

您可以随时滚动自己的SMTP实施,这不是很难做到,或者获得具有SMTP功能的第三方库。

然后,您必须为&#39; mx&#39;进行DNS查找。目标域的记录(可能类似于&#39; example.org&#39; - &gt;&#39; mx01.example.org&#39;),连接到该mx服务器并与其进行SMTP会话。< / p>

这&#34;应该&#34;正式工作,但由于SPAM过滤器原因,给定的邮件服务器可能不愿意接受来自未知/不受信任或未列入白名单的主机的SMTP连接。在这种情况下,您将不得不通过受信任的MTA,这基本上意味着这将需要身份验证。