#php #email #port
#php #Адрес электронной почты #порт
Вопрос:
Мой провайдер заблокировал порт 25 для отправки почты с PHP и вместо этого разрешил использовать порт 587 или 465. как мне заставить почтовую функцию php использовать порт 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?
Ответ №1:
Изменение smtp_port
влияет только на то, как mail()
взаимодействует с сервером, указанным в SMTP
настройке. Проблема не в этом. Проблема в том, что:
- Вы используете свой локальный компьютер в качестве SMTP-сервера — И
- Ваш провайдер блокирует ваш локальный SMTP-сервер (postfix) от ретрансляции сообщений в Gmail
Сначала прочитайте эту тему. В нем обсуждается точно такая же проблема. В результате вам нужно использовать другой почтовый сервер, предпочтительно почтовый сервер вашего интернет-провайдера. Какой сервер и порт ваш провайдер рекомендует вам использовать для исходящей почты, если вы хотите воспользоваться их почтовыми службами? Вы должны иметь возможность использовать это из вашего PHP, работающего локально, точно так же, как вы бы использовали почтовый клиент, подобный Thundebird, — и вы сможете отправлять в Gmail.
Комментарии:
1. я использовал smtp-сервер gmail и отредактировал некоторый файл конфигурации postfix, и он отлично работает. спасибо за этот совет.
Ответ №2:
Установите smtp_port = 587
в вашем php.ini. Смотрите http://php.net/manual/en/mail.configuration.php
Редактировать
Как отметил AJ, это не решит проблему, если вы используете локальный postfix или sendmail, что вы делаете, указывая smtp = localhost
. Попробуйте вместо этого установить его в качестве адреса SMTP-сервера вашего интернет-провайдера.
Это может привести к следующей проблеме, если они также требуют аутентификации, прежде чем разрешить вам отправлять почту, что делают многие интернет-провайдеры. В таком случае лучшим выбором будет почтовый пакет Pear. Это, кстати, также позволит вам указать почтовый сервер и порт в вашем скрипте. Из документации:
$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. написано, что используется только под Windows, но вы видите, что я на Mac, как мне изменить его на Mac?
2. Смотрите комментарий в руководстве по PHP: «Несмотря на то, что на этой странице говорится о настройках «SMTP» и «smtp_port», используемых только в Windows, все сайты Drupal используют эти настройки для отправки электронной почты, независимо от того, в какой ОС они запущены».
Ответ №3:
Вы можете отредактировать свой файл php.ini (если у вас есть доступ) и установить smtp_port = 587
или в своем коде, ini_set('smtp_port', 587)
.
Ответ №4:
Если вы можете, попробуйте переопределить параметр smtp_port с помощью ini_set(). Должно быть что-то вроде этого:
ini_set('smtp_port', 587);
Ответ №5:
Для тех из вас, кто использует MAMP и не может отправлять почту с помощью функции php mail () из-за того, что порт 25 заблокирован провайдером (в моем случае), вот некоторая информация для вас, чтобы решить эту проблему. поскольку OSX использует postfix для отправки почты, и если вы планируете использовать внешний smtp-сервер, такой как smtp.gmail.com который я использовал здесь, это то, что вы должны делать. вам нужно настроить Postfix для использования Gmail в качестве узла ретрансляции
a) Откройте MAMP и в postfix измените домен исходящей почты на smtp.gmail.com
б) откройте терминал и введите
sudo vi /etc/postfix/main.cf
это запросит ваш пароль администратора, введите его, и он откроется main.cf в редакторе vic) нажмите 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
надеюсь, это поможет кому-нибудь с той же проблемой, с которой столкнулся я.