10

我希望我的程序能够通过电子邮件向我发送错误报告。如何在不硬编码用户名/密码/SMTP 服务器/等的情况下做到这一点。进入代码?(这样做将允许用户反编译程序并接管此电子邮件帐户。)

有人告诉我,您可以通过远程登录到端口 25 来做一些事情,但我对细节非常模糊。Google 上的大多数代码片段都假定您有一个预先存在的帐户,但在这种情况下不起作用。

我正在使用 .NET v3.5(尤其是 C#),但我想这些想法在大多数语言中都足够相似。只要您意识到我正在为离线应用程序执行此操作,并且不向我提供 PHP 代码或其他东西,我们应该没问题。

4

6 回答 6

8

只要您的帐户在 gmail.com 上,请将gmail-smtp-in.l.google.com设置为程序中的传出 SMTP 服务器。使用该服务器时,您无需提供密码即可向 gmail-accounts 发送电子邮件。

于 2008-08-27T12:50:09.120 回答
7

我会创建一个网络服务来连接。该网络服务应根据您的程序提供的数据发送电子邮件。所有敏感的访问数据都保存在 Web 服务端,因此更安全。

于 2008-08-27T12:50:48.463 回答
1

如果该程序必须直接向您发送电子邮件,它必须以某种方式获取该信息,因此坚定的攻击者也可以获取该信息。

您是否考虑过在某处托管一个简单的 http 表单或 Web 服务,以便您可以从应用程序那里发布您需要的信息(无需身份验证),然后将其保存以供以后手动查看,或者从该服务器发送电子邮件?

于 2008-08-27T12:47:56.567 回答
0

我认为最好的计划是将错误信息提交给在您的控制下运行的某个服务(在简单的情况下是一个 Web 表单),然后它可以发送一封电子邮件(或以其他适当的方式记录它)。

如果假定发送电子邮件对最终用户有利,则另一种选择是让用户输入他们自己的 SMTP 服务器(如果需要,还可以输入用户名/密码) - 在 Unix 系统上,您可能只使用 sendmail 并依赖用户对其进行正确配置。我曾经在一个系统上工作,该系统使用这种方法向用户发送系统计划任务的报告,并且效果很好。

于 2008-08-27T12:53:10.657 回答
0

您需要做的是了解您正在使用的 ISP 的 SMTP 服务器,因为当您使用您自己的 ISP 的 SMTP 服务器时,您不会被视为进行邮件中继垃圾邮件,因此您无需任何身份验证即可通过。

不幸的是,并非总是能够轻松获取该信息,或者有一些小例外不允许您匿名登录,就像您在公司中使用 Exchange 时一样......

起初我考虑加密你的信息并在运行时解密它们,但它仍然可以通过嗅探网卡来获得。但是,您可以将其与某处的网络服务结合起来,该服务将为您进行解密和邮寄(或直接将信息发送到您喜欢的网络服务),就像其他人已经建议的那样。

于 2011-01-06T20:37:41.883 回答
-2
MailMessage msg = new MailMessage("someone@foo.com", "someoneelse@bar.com");
msg.Subject = "Check it out!";
msg.Body = "Visit stackoverflow.com!";
SmtpClient client = new SmtpClient("some.smtp.server", 25);
client.Send(msg);
于 2008-08-27T12:53:31.670 回答