如何在不使用预先存在的帐户的情况下从程序发送电子邮件?

StackOverflow https://stackoverflow.com/questions/29988

  •  09-06-2019
  •  | 
  •  

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

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

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

有帮助吗?

解决方案

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

其他提示

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

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

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

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

如果发送电子邮件被认为对最终用户有利,另一种选择是让用户输入自己的 SMTP 服务器(如果需要,还可以输入用户名/密码) - 在 Unix 系统上,您可以只使用 sendmail 并依赖用户正确配置它。我曾经开发过一个系统,该系统使用这种方法向用户发送系统计划任务的报告,并且效果非常好。

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

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

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

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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top