2012-05-16 48 views
0

我有一个脚本设置,当用户将他们的电子邮件插入提供的输入时,将向用户发送激活链接。发送带codeigniter的电子邮件时,如果它们包含链接,则不起作用

我使用CodeIgniter的电子邮件类来发送多部分电子邮件,我遇到的问题是当发送电子邮件时,调试程序说电子邮件已成功发送,但从未收到该邮件。

当我将电子邮件发送到我的内部工作电子邮件时,它发送得很好。但是当我将它发送到我的Gmail帐户时,它永远不会通过。

我已经设法追查到这个问题,因为在电子邮件中插入链接时存在问题。当我删除链接时,电子邮件发送正常。我把链接放回去了,我的gmail帐号永远不会收到这封电子邮件。

有没有人遇到过这个问题,或者你有任何见解如何解决这个问题?

回答

0

您的电子邮件被拒绝..这是没有问题的CI ..

+0

是的,看起来你是对的。在修改了一些URL之后,它似乎只在电子邮件包含特定域名时才阻止电子邮件。当我将域名更改为另一台服务器时,它可以正常工作。任何想法为什么它会阻止我发送电子邮件的域名? – DeanH

+0

其可能是垃圾邮件/黑名单。 – Laurence

+0

是的,gmail会检查SPF记录和标题,如果有任何不正确的事情,它会以垃圾邮件形式发送或拒绝发送 – Broncha

0

好了,这听起来像问题是不是笨或你的代码,但与服务器的邮件传输代理将其发送到Gmail服务器。

CodeIgniter将一封电子邮件放到一起并将其提供给PHP引擎,PHP引擎将其传递到服务器上的邮件传输代理以进行发送。 MTA将向PHP报告并因此向CodeIgniter报告它已正确收到电子邮件。由于PHP & CodeIgniter的工作已经完成,他们会报告他们已经成功发送了。

检查您的Gmail中的垃圾邮件文件夹,看看它是否已放在那里..?我有一段时间没有使用CI,因此无法准确记住,但我认为在发送之前可能需要设置一个HTML电子邮件参数。如果是这样,Gmail可能也会期待这个设置。

向下滚动到'电子邮件首选项': http://codeigniter.com/user_guide/libraries/email.html并将邮件类型设置为HTML。

如果这不起作用,您将需要完全调试。

要正确调试问题,您需要能够访问MTA日志。这是本地开发服务器还是现场制作机器?它是Linux还是Windows?如果Linux的哪个发行版?你知道你正在使用哪个MTA吗?你有SSH访问服务器?

如果您可以获得SSH访问权限并找出您拥有哪些MTA,将会更容易找到并且您将能够在发生时监控传出消息和目标服务器的响应。

+0

感谢您的回复。这是在CentOs上运行的远程开发服务器上。因为这台服务器是严格测试的,所以我不认为我会深究这一点。一旦它启动,这个系统将在不同的服务器上使用不同的域名。谢谢你的帮助。 – DeanH

相关问题