不能发送电子邮件到我自己的域名的地址
我有一个简单的PHP脚本在我的域名发送给我一个电子邮件:
... $toMail = "me@gmail.com"; //this works - I get the email at my gmail $toMail = "me@mydomain.com"; //this doesn't - I get nothing mail($toMail, $subject, $message, $header);
我改变了什么设置来解决这个问题?
我自己有这个问题,当我最近重新devise一个网站。
我们的系统build立的方式有一个问题,所以系统认为,因为电子邮件来自同一个域名,这是一封垃圾邮件,因此被封锁了。
请咨询您的系统pipe理员,您可以发送电子邮件等
要么,要么你必须修改头看起来像是从外部地址发送。 希望你把它分类。
对于使用Google Apps进行电子邮件的人,但将您的主机放在其他提供程序中,对于不熟悉cPanel的人员,这是更详细的说明。
当我发送电子邮件到我的域内的帐户时,我可以解决使用PHP表单发送来自我的域的电子邮件的问题。
即mydomain.com联系表格发送电子邮件至contact@mydomain.com。 即使我的网域使用「Google应用服务」的网域拥有正确的MXlogging,上述function也无法正常运作。
正如迈克指出(和其他人)上面的问题已经解决:将MXlogging添加到cPanel。
- 进入cPanel
- 去cPanel邮件部分
- searchMX条目维护,有时图标上方没有文本。
- select相关的域
- 更改电子邮件路由到远程邮件交换器。
- 添加所有的谷歌MXlogging,因为它们在您的域configuration使用适当的优先级值。 您可以在这里查看logging,并优先https://support.google.com/a/answer/174125
- 仔细检查远程邮件交换器。 被选中。
使用此设置,我可以使用邮件PHP函数将电子邮件发送到与我的网站相同域中的电子邮件帐户。
Google应用说明讨论MXlogginghttps://support.google.com/a/answer/54717?hl=zh_CN
在https://serverfault.com/questions/65365/disable-local-delivery-in-sendmail顶部的答案似乎对我来说是正确的。; 它的要点是,你需要在你的sendmail.mc中的以下内容:
define(`MAIL_HUB`, 'example.com.')dnl define(`LOCAL_RELAY`, 'example.com.')dnl
其中example.com是有问题的域名。
如果您使用后缀 ,请执行以下操作:
- 通过SSH连接到你的服务器。
- 编辑你的main.cf文件:
nano /etc/postfix/main.cf
- 使用#注释以下行:
# mydestination = ...
- 添加在main.cf文件的末尾:
mydestination =
- 通过运行以下命令重新载入您的postfixconfiguration
/etc/init.d/postfix reload
你需要在你的邮件function上设置一个额外的参数。 在你的工作例子中,你需要用'-f'来预先给你的电子邮件地址
mail($toMail, $subject, $message, $header, "-fme@mydomain.com");
我有同样的问题,并能够通过以下方式解决它。 我不在服务器上本地存储邮件,而是使用注册服务器上的MXlogging将邮件导向到Google Apps。 原来MXlogging也需要在Cpanel中更新,因为服务器没有从注册服务器处取得MXlogging,而是因为没有本地MXlogging或邮箱而丢弃。 我更新了Cpanel上的MX条目以匹配注册商的MX条目,问题立即得到修复
你的电子邮件托pipe在不同于该网站的服务器上吗? 如果是这种情况,PHP脚本可能会尝试将其发送到内部,在这种情况下,它将会消失,而其他目标电子邮件将被发送到Internet并正确路由。
我find的解决scheme是禁用您的networking主机上的邮件服务器,然后PHP将消息放到互联网上正确发送。
我同意迈克尔Hellein,根本问题可能是您的sendmail考虑您的域example.com电子邮件帐户作为本地帐户。 如果是这样,这里有几个指导链接:
- https://serverfault.com/questions/65365/disable-local-delivery-in-sendmail
- https://serverfault.com/questions/102647/sendmail-to-local-domain-ignoring-mx-records-part-2
- http://lists.freebsd.org/pipermail/freebsd-questions/2004-September/057382.html
- http://objectmix.com/sendmail/367920-sendmail-ignores-mailertable-some-semilocal-domains.html
但在我的情况下,使用FreeBSD 8.2,真正的诀窍是:
# cd /etc/mail # vim freebsd.mc
添加这两行:
define(`MAIL_HUB', `example.com.')dnl define(`LOCAL_RELAY', `example.com.')dnl
就在之前:
MAILER(local) MAILER(smtp)
然后:
# make
这是输出:
cp freebsd.mc host.example.com.mc /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 host.example.com.mc > host.example.com.cf cp freebsd.submit.mc host.example.com.submit.mc /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 host.example.com.submit.mc > host.example.com.submit.cf
然后:
# cp sendmail.cf sendmail.cf.bak # cp host.example.com.cf sendmail.cf # /etc/rc.d/sendmail restart
希望这可以让一些人头疼。
用PostFix,Debian7,smtp Mailjet
如果域是my-domain.com
,则在/etc/postfix/main.cf
中更改
mydestination = my-domain.com, localhost, localhost.localdomain, localhost
至
mydestination = localhost, localhost.localdomain, localhost
确保你实际上可以发送邮件到你的域名邮件账户,然后检查你的代码/电子邮件确保一切拼写正确..如果没有这帮助,我不知道什么地方出了问题..
正如其他人所解释的,一些服务器被configuration为拒绝在发送服务器上缺less有效电子邮件地址的电子邮件。 检查$ headersstring是否包含已定义的有效电子邮件地址“From:foo@example.com”。
我有同样的问题,因为我被托pipe在另一台服务器上的电子邮件,我只需要禁用本地邮件服务器。
我有这个问题几次,罪魁祸首是如果电子邮件托pipe在另一台服务器(例如谷歌应用程序)。 邮件发送到本地域时,它不会在MXlogging上进行查找,因此无法正确路由。 解决这个问题的方法就是简单地让主机在你的服务器上禁用邮件function。
我也有这个问题。 禁用邮件服务器意味着没有邮件发送! 所以我所做的修复是从/etc/mail/local-host-names
文件中删除所有本地域名
确保您的txt
logging已正确设置为您的域名。 这通常发生在你不把这个logging在txt
logging中时: @ (None)
v = spf1 include:_spf.google.com〜all
我有一个类似的问题,其中所有的邮件被完全发送到其他域名,如Gmail,生活,雅虎等,但所有的邮件将消失在本地域名。 我有一个基于Linux的运行Qmail的godaddy VPS服务器。
我通过删除var / qmail / control / virtualdomains文件中的特定域名解决了这个问题。
SMTP邮件服务器也是一个选项。
我花了超过8小时的这个错误,并解决它只是改变头到任何其他的电子邮件地址,它将工作