有没有办法从C#发送电子邮件而无需使用Gmail SMTP手动编码我的用户名和密码?
我知道有些软件可以看到源代码,我不太喜欢他们看到我的Gmail密码。
答案 0 :(得分:7)
您不应该在其他人正在运行的应用程序中使用您的用户名和密码。
修改应用程序,以便提示用户输入他们的电子邮件凭据并使用它们。
这必须存储在配置文件中,除非您存储哈希加密密码,否则其他人仍可以读取。
答案 1 :(得分:4)
第一个选项:在config
中存储用户名和密码using System.Net.Mail;
var fromEmail = ConfigurationSettings.AppSettings[ "mail" ];
var fromPassword = ConfigurationSettings.AppSettings[ "pass" ];
var fromAddress = new MailAddress(fromEmail, "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
app.config中的:
<appSettings>
<add key="mail" value="somemail@gmail.com" />
<add key="pass" value="password" />
</appSettings>
您也可以通过加密来制作安全的配置文件。
第二个选项:从用户
读取用户名和密码答案 2 :(得分:2)
向您的网络服务器发出HTTP POST,该服务器将代表该应用程序发送电子邮件。您可能需要某种方式来验证POST是否真的来自您的应用程序,因此您需要将密钥硬编码到应用程序,但由于您可以控制服务器部分,因此可以阻止发现被滥用的密钥
或者,创建一个二次一次性Gmail帐户,您可以使用该帐户向主帐户发送电子邮件,然后将其转发给目标收件人。
所有这些对我来说似乎很愚蠢,最终最好的解决方案取决于你打算如何发送电子邮件。
答案 3 :(得分:1)
如果您在ASP.NET中运行,则可以encrypt sections of the web.config file使用aspnet_regiis.exe tool。
如果您正在运行带有app.config文件的常规应用程序,那么您可以加密整个文件,或仅加密文件的一部分,如Jon Galloway在其博客文章"Encrypting Passwords in a .NET app.config File"中所述。
在配置文件中有这个后,您可以使用SecureString
class从配置文件中获取用户名/密码选项,并将它们加密到内存中,直到它们需要/使用的最后一刻。< / p>
答案 4 :(得分:0)
将用户名和密码存储在配置文件中......
答案 5 :(得分:0)
在配置文件中外部化特定于环境的配置 - 尤其是像凭据这样的敏感配置。
答案 6 :(得分:0)
ASP.NET IIS注册工具可以帮您完成。你只需要输入一行。检查http://odetocode.com/blogs/scott/archive/2006/01/08/encrypting-custom-configuration-sections.aspx。
答案 7 :(得分:0)
自从我的评论以来,我做了一些研究,所以我现在感觉更好回答。
您可以使用可以使用这些Instructions
设置的配置文件然后,您可以传递所需变量的信息。这会将它们存储在程序之外,尽管它们仍然是用纯文本写的。
配置文件的示例与此类似。
<?xml version ="1.0"?>
</configuration>
</appSettings>
<add key="password" value="Jdas7#8SL" />
</appSettings>
</configuration>
至于将这些信息输入你的程序,这里有一个链接,可以作为一个很好的例子。
如果您担心安全问题并且不希望在任何地方写入,那么您需要将其设置为每次都亲自输入。或者你可以使用我的评论中提到的一些公式来翻译密码。但是在那里结束的时候,你仍然处于泡沫中。
祝你好运。