通过SMTP发送电子邮件并进行测试

时间:2010-06-24 17:36:16

标签: smtp

我有一个带有邀请系统的PHP应用程序,用户可以邀请其他用户试用该服务。在内部,我们使用谷歌应用程序为我们的域发送/接收电子邮件(mydomain.com)。

1)我的问题是,我可以从我的服务器发送电子邮件,地址是invite@mydomain.com吗?我担心目标服务器阻止/忽略电子邮件。我知道可以通过配置我的php安装来发送电子邮件以使用谷歌smtp服务器,但每天限制500封电子邮件,这不是很容易扩展。

我对发送电子邮件及其被阻止/被视为垃圾邮件的原因/方式知之甚少。我很感激你能给我的任何好建议/提示。

2)测试我的应用程序的电子邮件部分是否正常工作而不在我的实时服务器上安装它的好方法是什么。我可以在桌面上设置smtp服务器并以这种方式发送邮件吗?你能推荐一些其他好的想法进行测试吗?我基本上只会向我的个人网络邮件帐户发送几封电子邮件,以确保一切正常。

谢谢, 比尔

5 个答案:

答案 0 :(得分:0)

要解决第二部分问题(正如Eric指出的那样,在第一部分的serverfault.com上你会有更好的运气),任何本地托管的SMTP服务器应该能够做到这一点,并且有很多可用的给定OS。谷歌可以帮助你。

您希望从本地SMTP服务器获得的主要功能是详细记录。由于各种原因(同样,serverfault.com),本地服务器完全有可能失败/拒绝将消息传递到其预期目的地,但这超出了测试代码将电子邮件传递到SMTP服务器的范围。

如果它正确地将测试消息转发给您,那很好。但如果没有,您只是希望能够在服务器的日志中看到它正确地接收了消息并且能够处理它。无论处理完成的是一个单独的问题。

答案 1 :(得分:0)

  

1)我的问题是,我可以发送电子邮件吗?   来自我的服务器与来自地址   是invite@mydomain.com?我是   担心电子邮件正在发生   被目的地阻止/忽略   服务器。我知道这是可能的   通过配置我的发送电子邮件   php安装使用google smtp   服务器,但有500的限制   电子邮件一天,这不是很好   可扩展性。

     

我真的不太了解   发送电子邮件以及它们为何/如何   阻止/考虑垃圾邮件。 ID   感谢任何好的建议/提示你   可以给我。

如果邮件被退回,有一种方法可以追踪(有超过10种可能的反弹原因!)。您可以在外发电子邮件中设置返回路径标头。最佳做法是在返回路径中指定不同的邮件地址。当电子邮件因任何原因而被退回时,将向该地址发送通知。此外,您可以拥有一个(PHP)cron作业,该作业使用IMAP连接到退回的电子邮件帐户,并对退回的电子邮件执行某些操作。这是一种非常可靠的方式来跟踪已发送电子邮件的状态。

此外,为了尽量减少您的电子邮件被列入黑名单的机会,您可以考虑使用证书签署您的电子邮件(您可以免费获得一个用于个人用途。商业邮件可能会花费您大约25美元一年)

  

2)测试看的好方法是什么   如果我的应用程序的电子邮件部分是   没有安装在我的工作   直播服务器。我可以设置一个smtp   我的桌面上的服务器和发送邮件   这条路?你能推荐别的吗?   好的测试想法。我基本上   只发几封电子邮件给我   个人网络邮件帐户,以确保   一切正常。

只要未阻止外发SMTP端口(25),您就可以从任何地方发送测试电子邮件。如果您拥有自己的启用了用户名/密码验证的smtp服务器,则可以使用这些凭据/设置从任何位置发送电子邮件。在所有其他情况下,您必须使用互联网提供商的smtp发送电子邮件。

答案 2 :(得分:0)

对于电子邮件测试,我使用Pappercut。它很容易使用,但有些防病毒软件可能不喜欢你打开25端口。

答案 3 :(得分:0)

我使用Dumbster进行测试。我会收到电子邮件,然后我的测试代码可以查看内容。

为了避免垃圾邮件,你需要做很多事情,而且我不确定我是否已找到所有垃圾邮件。确保您的IP已注册,反向查找返回正确的域。

答案 4 :(得分:0)

1)发送:

这是一篇很好的文章,描述了发送电子邮件http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html

的一些陷阱

查看评论。

2)测试:

免责声明 - 我为与以下相关的服务背后的公司工作。

如果您不想设置自己的smtp服务器,可以使用托管电子邮件测试服务,例如Clickity

您可以根据需要创建任意数量的测试电子邮件地址,也可以将应用配置为直接指向我们的smtp服务器。然后,您可以在我们的网站上查看完整的电子邮件,作为手动测试的一部分,或通过我们的API自动进行测试。