繁体   English   中英

PHP邮件功能不向某些地址发送电子邮件

[英]PHP mail function not sending emails to certain addresses

我一直在使用php邮件功能在注册时向客户发送包含帐户详细信息的电子邮件,但我刚发现有些人没有收到电子邮件。 例如,当我只测试我和其他一个同事收到电子邮件时,我向每个同事发送电子邮件

- me who received email
- pam@companyx.co.uk
- collegue who received email
- bill@companyx.co.uk
- collegue who did not receive emails:
- email 1 - ted@companyx.co.uk,
- email 2 - ted@companyy.co.uk
- collegue who did not receive emails:
- cal@companyy.co.uk
- collegue who did not receive emails:
- emma@companyy.co.uk

垃圾邮件文件夹中也没有收到电子邮件..

$from = "companyy <support@companyy.co.uk>";          
$subject = "$username Account Details for companyy.co.uk";     
$message = "You have been registered as an administrator of companyy Online.
You can manage your clients, bills and other account functions online.       

Your Username: $username
Your Password: $password2
Your Four-Digit PIN: $PIN         

Once logged in you can change your password to something you will find easier to remember. Please delete this email once you have changed your settings or memorised them.           

Thank you        

This is an automated response, please do not reply!";

mail($email, $subject, $message, $from);
Header('Location: results.php?msg=Added Successfully');

这是关于发送电子邮件的一个肮脏的小秘密:你失去控制。 一旦他们离开你的服务器,互联网之神的优雅就是你的电子邮件到达目的地。 一路上它从一个网络“握手”到另一个网络。 它到达了最终目的地,然后受到大量垃圾邮件过滤器和规则的影响,许多技术人员都处于黑暗中。 例如,您是否知道MSN Hotmail,AOL等不会同时接受来自服务器(ip范围)的一定数量的电子邮件? 一旦达到服务器的预定(和未发布)限制,电子邮件将被保留,无论其垃圾邮件评级如何。 最终它将被通过,但这意味着您的用户所做的密码请求不会是即时的。 这是另一个花絮 - 服务器基于域的寿命和其他未发布的因素获得“信任”。 您的域名是否已存活多久? 你被列入黑名单吗? 电子邮件是“垃圾邮件”(请查看此类工具)

然后有像AOL这样的网站,即使是高质量服务器的高质量电子邮件也无法定期交付。 (谷歌“aol传播能力”,一些有趣的阅读)

那么该怎么办? 从黑名单检查开始。 如果那样好,请检查标题。 “发件人”地址是否与发送电子邮件的域名相匹配,该帐户是否有效? 这可能是一个很大的垃圾邮件红旗。 为了避免这个问题,我的公司(每天发送50,000多封电子邮件)通常设置“虚拟”回复帐户。 您是否正在使用您正在测试的用户的白名单? 用户是否使用像Outlook这样的程序随机进行黑名单? 更改您的消息,看看是否提高了可传递性。 使用多个不同的主机进行测试,看看它是否只是一个特定的系统。

冲洗,重复,继续......

看来电子邮件已发送。 问题出在接收方。 检查垃圾邮件或过滤器。 您可以记录发送的邮件以确保发送的内容。

你必须调试$email ,也许它是空的或虚假的:

var_dump($email);

但是这个问题可能与php无关。 首先查看一些电子邮件黑名单网站,如http://www.mxtoolbox.com/blacklists.aspx

如果您在任何黑名单中找不到您的盒子,您必须联系服务器管理员,他们必须检查日志。

您可能有一个已被列入黑名单的IP地址,在共享主机中很常见。 移动服务器或将电子邮件外包给sendgrid或postmarkapp

检查您的消息并确保它与PHP_EOL分开

要发送的消息。

每行应使用LF(\\ n)分隔。 行不应超过70个字符。

例如:

$message = 'This message was sent via PHP!' . PHP_EOL .
           'It should work ... and it does.' . PHP_EOL . PHP_EOL . 
           'From Display Name' . PHP_EOL;
// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);

使用PHP邮件时

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM