Вопрос по php, dns, email – не могу отправить почту на адреса в моем собственном домене

31

У меня есть простой скрипт php на моем домене, который отправляет мне электронное письмо:

...
$toMail = "[email protected]"; //this works - I get the email at my gmail
$toMail = "[email protected]"; //this doesn't - I get nothing

mail($toMail, $subject, $message, $header); 

Какую настройку изменить, чтобы это исправить?

Ваш Ответ

18   ответов
0

что вы действительно можете отправлять почту на адрес электронной почты вашего домена, а затем проверьте свой код / адрес электронной почты, , что все написано правильно ... если ничего из этого не помогло, я не знаю, что пошло не так ..

@techy Это может быть лучше в качестве комментария ..
электронная почта на моем домене работает. Я могу отправлять и получать электронную почту там, используя gmail или что-то еще. Это просто не будет отправлять с php. Правописание в порядке. Я гуглил и видел, что у многих такая же проблема, но нет хорошего объяснения решения. sol
0

Local Mail Exchanger:

Go to cPanel Select Email Routing Select your domain Select Local Mail Exchanger

Local Mail Exchanger позволит вам отправить электронное письмо на учетную запись того же домена в GoDaddy: например, электронное письмо на адрес[email protected]

10

В вашем рабочем примере вам нужно будет добавить свой адрес электронной почты с & apos; -f & apos; например

mail($toMail, $subject, $message, $header, "[email protected]");

Хм, а что значит "-f"? делать?
@redolent Это сработало и для меня после нескольких часов стука моей головы. Спасибо!
mail($toMail, $subject, $message, $header, "-r [email protected]"); работал на меня.
1

коренной проблемой может быть ваша 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

Надеюсь, это избавит кого-то от головной боли.

0

когда все письма отлично отправлялись на другие домены, такие как gmail, live, yahoo и т. Д., Но все письма исчезали на локальных доменах. У меня был VPS-сервер с Godaddy, который был основан на Linux с Qmail.

Я решил проблему, удалив определенные доменные имена в файле var / qmail / control / virtualdomains.

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 - рассматриваемый домен.

47

использующих Google Apps для электронной почты, но имеющих своего хоста у другого провайдера, это более подробные инструкции для людей, которые не очень знакомы с cPanel.

Я мог бы решить проблему отправки электронной почты с моего домена, используя форму PHP, при отправке электронной почты на учетную запись внутри моего домена.

т.е. mydomain.com Форма обратной связи, отправляющая электронное письмо по адресу [email protected] Выше не работает, даже если мой домен имеет правильные записи MX для домена с помощью Google Apps.

Как отметил Майк (и другие) выше, проблема была решена: добавление записей MX в cPanel.

Enter into the cPanel Go the the cPanel Mail section Search for MX Entry Maintenance, sometimes there is no text above the icon. Select the related domain Change Email Routing to Remote Mail Exchanger. Add all the google MX records as they are in your domain configuration using the appropriate priority values. You can check the records here and priorities https://support.google.com/a/answer/174125 Double check that Remote Mail Exchanger. is selected.

С помощью этого параметра я смог отправить электронную почту с помощью функции PHP почты на учетную запись электронной почты в том же домене, что и мой веб-сайт.

Инструкции Google App, говорящие о записях MX https://support.google.com/a/answer/54717?hl=en

Решил проблему для меня.
Это решение сработало для меня. Благодарю.
Ты отличный чувак .. моя проблема решена ...... спасибо
РЕШЕНО через 5 часов благодаря этому. Интернет золото вам хорошо, сэр!
Я использую свой сервер на сырой Ubuntu VPS. У меня нет cPanel, но я также сталкиваюсь с этой проблемой. Есть идеи, как можно это решить?
1

Если доменmy-domain.com, в/etc/postfix/main.cf, менять

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

в

mydestination = localhost, localhost.localdomain, localhost
20

когда недавно занимался редизайном сайта.

Была проблема с тем, как была настроена наша система, так что система подумала, что, поскольку электронная почта пришла с того же домена, она была спамом и поэтому блокировала ее.

Узнайте у своего системного администратора, разрешено ли вам отправлять электронные письма и т. Д.

Либо так, либо вам придется изменить заголовки, чтобы они выглядели так, как будто они отправляются с внешнего адреса. Надеюсь, вы все разберетесь.

0

txt запись настроена правильно для вашего домена. Обычно это происходит, когда вы не помещаете это вtxt запись:@ (None)v = spf1 include: _spf.google.com ~ all

0

и виновник был, если электронная почта была размещена на другом сервере (например, Google Apps). Когда почта отправляется в локальный домен, она не выполняет поиск записи MX и, следовательно, не будет правильно маршрутизироваться. Решение этой проблемы - просто отключить функцию почты на вашем сервере вашим хостом.

Я не понимаю, как отключение функции почты может решить проблему?
0

просто изменив заголовок на любой другой адрес электронной почты, и он будет работать

3

и я смог решить ее следующим образом. Я не храню почту локально на сервере, но использую записи MX на регистраторе для направления почты в Службы Google. Оказалось, что записи MX также необходимо обновить в Cpanel, поскольку сервер не принимает записи MX от регистратора, а вместо этого отбрасывает их, поскольку не было локальной записи MX или почтового ящика. Я обновил записи MX на Cpanel, чтобы они соответствовали записям MX регистратора, и проблема была решена немедленно

1

отличном от веб-сайта? В этом случае PHP-сценарий может пытаться отправить его изнутри, и в этом случае он просто исчезнет, тогда как другие целевые электронные письма будут помещены в Интернет и перенаправлены должным образом.

Решение, которое я нашел, состояло в том, чтобы отключить почтовый сервер на вашем веб-хосте, а затем PHP поместит сообщение в Интернет для правильной отправки.

Нет, это тот же сервер. sol
0

некоторые серверы настроены на отклонение электронных писем, пропускающих действительный адрес электронной почты на отправляющем сервере. Убедитесь, что в строке $ headers указан определенный действительный адрес электронной почты & quot; От: [email protected]" ;.

0

что письмо вообще не было отправлено! Таким образом, я решил исправить все локальные доменные имена из/etc/mail/local-host-names файл

0

и, поскольку я был размещен на другом сервере для электронной почты, мне просто пришлось отключить локальный почтовый сервер.

11

postfix, сделай это :

connect to your server via ssh. edit your main.cf file :

nano /etc/postfix/main.cf

comment the following line with # :

# mydestination = ...

add at the end of the main.cf document :

mydestination =

reload your postfix configuration by running :

/etc/init.d/postfix reload

Единственное решение, которое работало со мной
Если вы используете постфикс, это работает!
5. сервис перезагружает постфикс

Похожие вопросы