如何使用现有帐户从程序_without_发送电子邮件?
我希望我的程序能够向我发送错误报告。如何在不对用户名/密码/ SMTP服务器/等进行硬编码的情况下执行此操作。进入代码? (这样做将允许用户反编译程序并接管该电子邮件帐户。)
有人告诉我可以通过telnet连接到端口25来做一些事情,但是我对此细节感到非常模糊。 Google上的大多数代码段都假定我们拥有一个预先存在的帐户,在这种情况下不起作用。
我使用的是.NET v3.5(特别是Cin),但是我想这些想法在大多数语言中都足够相似。只要我们意识到我正在为离线应用程序执行此操作,并且不向我提供PHP代码或者其他内容,我们就可以了。
解决方案
回答
如果程序必须直接向我们发送电子邮件,则它必须以某种方式获取该信息,因此,坚定的攻击者也可以获取该信息。
我们是否考虑过在某个地方托管简单的http表单或者Web服务,以便可以从应用程序中发布所需的信息(无需身份验证),然后保存以供以后手动查看,或者从该服务器发送电子邮件?
回答
只要帐户位于gmail.com上,就将gmail-smtp-in.l.google.com设置为程序中的传出SMTP服务器。使用该服务器时,无需提供密码即可将电子邮件发送到gmail-accounts。
回答
我将创建一个要连接的Web服务。该Web服务应根据程序提供的数据发送电子邮件。所有敏感的访问数据都保存在Web服务端,因此更安全。
回答
我认为最好的计划是将错误信息提交到我们控制下运行的某些服务(在简单情况下为Web表单),然后可以发送电子邮件(或者以其他适当的方式对其进行记录)。
如果假定发送电子邮件对最终用户有利,则另一种选择是让用户输入自己的SMTP服务器(如果需要,还可以输入用户名/密码)。在Unix系统上,我们可以只使用sendmail并依靠用户对其进行正确配置。我曾经在一个使用这种方法向用户发送系统计划任务的报告的系统上工作,并且效果很好。
回答
MailMessage msg = new MailMessage("[email protected]", "[email protected]"); msg.Subject = "Check it out!"; msg.Body = "Visit stackoverflow.com!"; SmtpClient client = new SmtpClient("some.smtp.server", 25); client.Send(msg);