У меня есть простой 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);
Какую настройку я могу изменить, чтобы исправить это?
У меня была эта проблема сама, когда я недавно перепроектировал сайт.
Возникла проблема с настройкой нашей системы, так что система считала, что, поскольку электронная почта поступает из того же домена, это было спам-электронное письмо и как таковое блокировало его.
Проконсультируйтесь с вашим системным администратором, что вам разрешено отправлять электронные письма и т. Д.
Либо это, либо вам придется изменить заголовки, чтобы они выглядели так, будто они отправляются с внешнего адреса. Надеюсь, вы разобрались.
Для людей, использующих Google Apps для электронной почты, но имеющих свой хост в другом провайдере, это более подробные инструкции для людей, которые не очень хорошо знакомы с cPanel.
Я могу исправить проблему отправки электронной почты из своего домена с помощью формы PHP при отправке электронной почты в учетную запись внутри моего домена.
т.е. контактную форму mydomain.com, отправляющую электронное письмо на адрес contact@mydomain.com. Вышеупомянутое не работает, даже если у моего домена есть правильные записи MX для домена с помощью Google Apps.
Как заметил Майк (и другие), проблема была решена: добавление записей MX в cPanel.
С этим параметром я смог отправить электронное письмо с помощью функции электронной почты электронной почты на учетную запись электронной почты в том же домене, что и на моем веб-сайте.
Инструкции Google App, касающиеся записей MX https://support.google.com/a/answer/54717?hl=ru
Самый верный ответ на 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 является доменом, о котором идет речь.
Если вы используете postfix , сделайте следующее:
nano /etc/postfix/main.cf
# mydestination = ...
mydestination =
/etc/init.d/postfix reload
Вам необходимо установить дополнительный параметр в вашей почтовой функции. В вашем рабочем примере вам нужно будет добавить свой адрес электронной почты с помощью «-f», например
mail($toMail, $subject, $message, $header, "-fme@mydomain.com");
У меня была такая же проблема, и я смог решить ее следующим образом. Я не храню почту локально на сервере, но использую записи MX в регистраторе для прямой отправки сообщений в Google Apps. Оказалось, что записи MX необходимо обновить в Cpanel, так как сервер не брал записи MX у регистратора, а вместо этого отбрасывал, так как не было локальной записи MX или почтового ящика. Я обновил записи MX на Cpanel, чтобы соответствовать записи MX регистратора, и проблема была исправлена мгновенно
У вас есть электронная почта, размещенная на другом сервере, чем на веб-сайте? Если это так, скрипт PHP может пытаться отправить его внутренне, и в этом случае он просто исчезнет, а другие целевые электронные письма будут загружены в Интернет и будут правильно маршрутизированы.
Решение, которое я нашел, это отключить почтовый сервер на вашем веб-хосте, а затем PHP будет отправлять сообщение в Интернет для правильной отправки.
Я согласен с Майклом Хеллейном, проблема с корнем может быть вашей 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
Надеюсь, это сэкономит некоторые головные боли кому-то.
С PostFix, Debian7, smtp Mailjet
Если домен /etc/postfix/main.cf
, в /etc/postfix/main.cf
, измените
mydestination = my-domain.com, localhost, localhost.localdomain, localhost
в
mydestination = localhost, localhost.localdomain, localhost
убедитесь, что вы действительно можете отправить почту в свою учетную запись электронной почты домена, а затем проверить свой код / адрес электронной почты, убедитесь, что все написано правильно. Если это не помогло, я не знаю, что пошло не так.
Как объясняют другие, некоторые серверы настроены на отклонение писем, у которых отсутствует действительный адрес электронной почты на отправляющем сервере. Убедитесь, что строка $ headers содержит определенный действительный адрес электронной почты «From: foo@example.com».
У меня была такая же проблема, и поскольку я был размещен на другом сервере для электронной почты, мне просто пришлось отключить локальный почтовый сервер.
У меня была эта проблема несколько раз, и виновником было то, что электронная почта размещалась на другом сервере (например, в Google Apps). Когда почта отправляется в локальный домен, он не беспокоится о поиске в записи MX, и поэтому он не будет правильно маршрутизироваться. Решение этой проблемы – просто просто отключить почтовую функцию на вашем сервере вашим хостом.
У меня тоже была эта пробема. Отключение почтового сервера означало, что не было отправлено ни одного письма! Таким образом, исправление, которое я сделал, – удалить все локальные имена домена из файла /etc/mail/local-host-names
Убедитесь, что ваша запись txt
правильно настроена для вашего домена. Обычно это происходит, если вы не помещаете это в запись txt
: @ (None)
v = spf1 include: _spf.google.com ~ all
У меня была аналогичная проблема, когда все письма были прекрасно отправлены в другие домены, такие как gmail, live, yahoo и т. Д., Но все письма исчезли в локальных доменах. У меня был VPS-сервер с godaddy, который был основан на Linux на основе Qmail.
Я решил проблему, удалив определенные имена доменов в файле var / qmail / control / virtualdomains.
Почтовый сервер SMTP тоже может быть вариантом.
Я трачу более 8 часов на эту ошибку и решаю ее просто изменить заголовок на любой другой адрес электронной почты, и он будет работать