无法向我自己的域中的地址发送电子邮件

时间:2009-07-10 04:44:24

标签: php email dns

我的域名上有一个简单的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); 

我要更改哪些设置来解决此问题?

19 个答案:

答案 0 :(得分:48)

对于使用Google Apps for email的人,但将您的主机放在其他提供商中,这是针对不熟悉cPanel的人员的更详细说明。

我可以解决使用PHP表单从我的域发送电子邮件的问题,将电子邮件发送到我的域内的帐户。

即。 mydomain.com联系表格发送电子邮件至contact@mydomain.com。 即使我的域名使用Google Apps为域名提供了正确的MX记录,上述操作也无效。

正如迈克指出的(和其他人)上面的问题已经解决了:将MX记录添加到cPanel中。

  1. 进入cPanel
  2. 转到cPanel邮件部分
  3. 搜索MX Entry Maintenance,有时图标上方没有文字。
  4. 选择相关域
  5. 更改电子邮件路由到远程邮件交换器。
  6. 使用适当的优先级值添加域配置中的所有Google MX记录。 您可以在此查看记录和优先级 https://support.google.com/a/answer/174125
  7. 仔细检查是否已选择远程邮件交换器。
  8. 通过此设置,我可以使用邮件PHP功能将电子邮件发送到与我的网站位于同一域内的电子邮件帐户。

    Google App说明谈论MX记录 https://support.google.com/a/answer/54717?hl=en

答案 1 :(得分:20)

我最近在重新设计网站时遇到了这个问题。

我们的系统设置方式存在问题,因此系统认为由于电子邮件来自同一个域,因此它是垃圾邮件,因此阻止了它。

请与您的系统管理员核实您是否可以发送电子邮件等。

要么是这样,要么你必须修改标题,使其看起来像是从外部地址发送的。希望你把它分类。

答案 2 :(得分:13)

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是相关域名。

答案 3 :(得分:12)

如果您使用 postfix ,请执行以下操作:

  1. 通过ssh连接到您的服务器。
  2. 编辑 main.cf 文件:
  3. nano /etc/postfix/main.cf

    1. 使用评论以下一行:
    2. # mydestination = ...

      1. 添加在 main.cf 文档的末尾:
      2. mydestination =

        1. 运行以下命令重新加载后缀配置:
        2. /etc/init.d/postfix reload

答案 4 :(得分:10)

您需要在邮件功能上设置其他参数。在您的工作示例中,您需要在电子邮件地址前加上'-f',例如

mail($toMail, $subject, $message, $header, "-fme@mydomain.com");

答案 5 :(得分:3)

我遇到了同样的问题,并且能够通过以下方式解决问题。我不会在服务器上本地存储邮件,而是使用注册商处的MX记录将邮件定向到Google Apps。事实证明,需要在Cpanel中更新MX记录,因为服务器没有从注册商处获取MX记录,而是因为没有本地MX记录或邮箱而丢弃。我更新了Cpanel上的MX条目以匹配注册商的MX条目,问题立即得到修复

答案 6 :(得分:1)

我同意Michael Hellein,根本问题可能是您的sendmail,将您的域example.com电子邮件帐户视为本地帐户。如果是这样,这里有很少的指导链接:

但在我的情况下,使用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

希望这可以为某些人带来一些麻烦。

答案 7 :(得分:1)

您的电子邮件是否托管在与网站不同的服务器上?如果是这种情况,PHP脚本可能会尝试在内部发送它,在这种情况下它会消失,而其他目标电子邮件将被放到互联网上并正确路由。

我找到的解决方案是禁用网络主机上的邮件服务器,然后PHP会将邮件发送到互联网上以便正确发送。

答案 8 :(得分:1)

使用PostFix,Debian7,smtp Mailjet

如果域名为my-domain.com,请在/etc/postfix/main.cf中更改

mydestination = my-domain.com, localhost, localhost.localdomain, localhost

mydestination = localhost, localhost.localdomain, localhost

答案 9 :(得分:0)

正如其他人所解释的那样,某些服务器配置为拒绝发送服务器上缺少有效电子邮件地址的电子邮件。检查$ headers字符串是否包含已定义的有效电子邮件地址“From:foo@example.com”。

答案 10 :(得分:0)

我遇到了同样的问题,因为我是在另一台服务器上托管电子邮件,所以我只需要禁用本地邮件服务器。

答案 11 :(得分:0)

我有几次这个问题,罪魁祸首是电子邮件是在另一台服务器(例如Google Apps)上托管的。当邮件发送到本地域时,它不会在MX记录上执行查找,因此无法正确路由。此问题的解决方案只是让您的主机在服务器上禁用邮件功能。

答案 12 :(得分:0)

我也有这个问题。禁用邮件服务器意味着根本没有发送电子邮件!所以我做的修复是从/etc/mail/local-host-names文件中删除所有本地域名

答案 13 :(得分:0)

确保为您的域正确设置了txt条记录。这通常发生在您未将其放入txt记录时:@ (None) v = spf1 include:_spf.google.com~all

答案 14 :(得分:0)

确保您可以实际发送邮件到您的域名电子邮件帐户,然后检查您的代码/电子邮件,确保所有内容拼写正确..如果这些都没有帮助我不知道出了什么问题..

答案 15 :(得分:0)

我遇到了类似的问题,其中所有邮件都被完美地发送到gmail,live,yahoo等其他域名,但所有邮件都会在本地域名中消失。 我有一个带有godaddy的VPS服务器,它基于Linux运行Qmail。

我通过删除var / qmail / control / virtualdomains文件中的特定域名解决了这个问题。

答案 16 :(得分:0)

SMTP邮件服务器也可以是一个选项。

答案 17 :(得分:0)

我花了超过8小时来处理此错误并解决它只是将标题更改为任何其他电子邮件地址并且它将起作用

答案 18 :(得分:0)

对我有用的是选择本地邮件交换器

  • 转到cPanel
  • 选择电子邮件路由
  • 选择您的域
  • 选择本地邮件交换器

本地邮件交换器将使您能够将电子邮件发送到GoDaddy中相同域的帐户:例如:发送到info@yourdomain.com

的电子邮件