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

时间:2008-08-27 12:40:40

标签: .net email smtp

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

我被告知你可以通过telnet到端口25来做一些事情,但我对细节非常模糊。 Google上的大多数代码段都假设您有一个预先存在的帐户,但在这种情况下无效。

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

6 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

不幸的是,并不总是能够轻松获取这些信息,或者有一些小的例外情况会让您匿名登录,就像您在公司中使用Exchange一样......

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

答案 5 :(得分:-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);
相关问题