изменить порт smtp с 25 на 587? - PullRequest
7 голосов
/ 06 мая 2011

Мой провайдер заблокировал порт 25 для отправки почты из PHP, и вместо этого разрешил использовать порт 587 или 465. Как заставить функцию php mail использовать порт 587 вместо 25 по умолчанию? Кстати: я на OSX 10.6.6, используя MAMP PRO

ОБНОВЛЕНИЕ: я попытался изменить настройки в php.ini на это

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 587

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

May  6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2822]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out
May  6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2823]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out
May  6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2827]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out
May  6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2825]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out
May  6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2828]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out

Вы видите, что он все еще пытается подключиться через порт 25? как я могу изменить его в Mac?

Ответы [ 5 ]

5 голосов
/ 06 мая 2011

Изменение smtp_port влияет только на то, как mail() взаимодействует с сервером, указанным параметром SMTP. Это не проблема. Проблема в том, что:

  1. Вы используете локальный компьютер в качестве SMTP-сервера - AND
  2. Ваш провайдер блокирует ваш локальный SMTP-сервер (postfix) от пересылки сообщений в Gmail

Сначала прочитайте эту ветку . Здесь обсуждается точно такая же проблема. В результате вам нужно использовать другой почтовый сервер, предпочтительно почтовый сервер интернет-провайдера. Какой сервер и порт ваш интернет-провайдер скажет вам использовать для исходящей почты, если вы хотите использовать их почтовые сервисы? Вы должны иметь возможность использовать это на своем PHP, работающем локально, так же, как на почтовом клиенте, таком как Thundebird - и вы сможете отправлять в Gmail.

3 голосов
/ 06 мая 2011

Установите smtp_port = 587 в вашем php.ini.См. http://php.net/manual/en/mail.configuration.php

РЕДАКТИРОВАТЬ

Как отметил AJ, это не решит проблему, если вы используете локальный постфикс или sendmail, что вы делаете, указавsmtp = localhost.Попробуйте вместо этого установить адрес SMTP-сервера вашего провайдера.

Это может привести к следующей проблеме, если они также требуют аутентификации перед тем, как разрешить вам отправлять почту, что делают многие интернет-провайдеры.В этом случае лучшим вариантом будет пакет Pear Mail .Это, кстати, также позволит вам указать почтовый сервер и порт в вашем скрипте.Из документации:

$params["host"] - The server to connect. Default is localhost.
$params["port"] - The port to connect. Default is 25.
$params["auth"] - Whether or not to use SMTP authentication. Default is FALSE.
$params["username"] - The username to use for SMTP authentication.
$params["password"] - The password to use for SMTP authentication.
1 голос
/ 06 мая 2011

Вы можете отредактировать файл php.ini (если у вас есть доступ) и установить smtp_port = 587 или в своем коде ini_set('smtp_port', 587).

0 голосов
/ 23 февраля 2012

Для тех из вас, кто использует MAMP и не может отправить почту из функции php mail () из-за того, что порт 25 заблокирован провайдером (в моем случае), вот некоторая информация для ее решения. поскольку OSX использует postfix для отправки почты, и если вы планируете использовать внешний SMTP-сервер, такой как smtp.gmail.com, который я использовал здесь, это то, что вы должны делать. вам нужно настроить Postfix для использования Gmail в качестве узла ретрансляции

a) Откройте MAMP и в postfix измените домен исходящей почты на smtp.gmail.com

b) откройте терминал и наберите sudo vi /etc/postfix/main.cf, вам будет предложено ввести пароль администратора, откроется файл main.cf в редакторе vi

в) нажмите ctrl + f и дойдите до конца файла, переместите курсор на одну строку вниз от конца и нажмите a , редактор теперь переключится в режим вставки для редактирования файла.

в main.cf добавить эти настройки

relayhost = [smtp.gmail.com]:587

smtp_tls_security_level = verify
#smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

нажмите : wq для выхода из vim. Вернувшись в оболочку, наберите sudo vi /etc/postfix/sasl_passwd и введите следующее (подставьте свой адрес Gmail и пароль Gmail):

[smtp.gmail.com]:587 user@gmail.com:mypassword

снова нажмите : wq , чтобы сохранить и выйти из файла, и выполните следующую команду

sudo postmap /etc/postfix/sasl_passwd
sudo postfix reload

надеюсь, это поможет кому-то с той же проблемой, с которой я столкнулся.

0 голосов
/ 06 мая 2011

Если можете, попробуйте переопределить настройку smtp_port с помощью ini_set ().Должно быть что-то вроде этого:

ini_set('smtp_port', 587);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...