Чтобы функции почты были доступны, PHP требует установленной и работающей системы электронной почты. Используемая программа определяется настройками конфигурации в файле php.ini.
Это означает, что вам нужно установить какой-нибудь почтовый сервер и настроить php для его использования. Обычно этот почтовый сервер является постфиксом в Ubuntu. Однако - если сторона php, которую вы кодируете, в конечном итоге будет храниться на стороне хостинг-сервиса (например, xmission), то, скорее всего, почтовый сервер там уже будет установлен. В этом случае просто протестируйте свой сайт онлайн, а не локально.
Если вам нужно протестировать его в вашей собственной системе или вы хотите разместить его на своем домашнем сервере, выполните следующие действия:
Постфиксная установка
Установка: postfix / sudo apt-get install postfix
Во время процесса вас спросят, в каком режиме вы хотите установить postfix. Есть четыре возможных режима:
Интернет : Ваш собственный почтовый сервер.
Спутник : внешний почтовый провайдер (например, Google) будет использоваться для отправки и получения почты. Сервер не будет получать почту.
Smarthost : смесь между двумя. Почта хранится локально, но отправляется через внешнего почтового провайдера.
Только местный : вас это не касается. Это системный внутренний почтовый сервер. Вы можете только отправлять почту от пользователя к пользователю в системе.
Остальные параметры установки зависят от вашего выбора этой общей конфигурации.
Скорее всего, вы выберете спутниковую установку. Это означает, что почта будет отправлена через внешнего провайдера. В качестве smtp-сервера (сервера исходящей почты) вам нужно будет указать своих провайдеров smtp. Остальные варианты говорят сами за себя.
Конфигурация после установки
Большинство smtp-серверов требуют аутентификации по паролю для отправки почты. Поэтому postfix нужно будет знать этот пароль. Также есть такие вещи, как шифрование, которое нужно учитывать (что вам придется гуглить). Вот как вы настраиваете postfix с использованием аутентификации по паролю (sasl):
Установите
libsasl2-modules и
sasl2-bin
, щелкнув значки Центра программного обеспечения или из терминала, используя:
Это должно делать это в большинстве случаев. Тем не менее, некоторые провайдеры SMTP требуют определенного адреса в качестве отправителя или шифрования.
Связанный: PEAR :: Mail интерфейс также может быть интересен для вас.
Gmail (и, возможно, другим службам) может не понравиться то, что вы пытаетесь отправлять почту таким образом, поскольку это может считаться небезопасным по их стандартам, и это может заблокировать вашу попытку, т. Е. На экране ничего не произойдет, или какое-то место всего процесса заблокирует ваша аутентификация. Также ваш POP3 должен быть включен.
Чтобы противостоять этому, смотрите здесь. (Если вы хотите быть в безопасности, создайте фиктивную учетную запись Gmail)
Отправка почты из Ubuntu (локальной) работает. Но что, если я хочу, чтобы моя Windows использовала эту машину для отправки почты (также PHP)? Как мне это настроить?
JM на работе
Не уверен, что я понял вопрос. Вы можете шлифовать с вашей машины Ubuntu. Теперь, что вы хотите сделать, это отправить mal через эту машину Ubuntu с вашего ПК с Windows через php? Это правильно?
con-f-use
2
Теперь пакет libsasl2 не существует. Я использую 11.04. Его libsasl2-2 согласно обновленному пакету ..
Мифический
61
Как уже отмечалось, postfix будет излишним, если вам просто нужно отправлять электронные письма от php при разработке приложений на вашем домашнем компьютере.
Я лично использую очень простой и легкий пакет ssmtp. Он будет использовать любой SMTP-сервер для отправки исходящих писем. Установите его, запустив:
sudo apt-get install ssmtp
Затем отредактируйте /etc/ssmtp/ssmtp.confфайл, закомментируйте существующую строку mailhub и добавьте следующие строки (этот пример для сервера gmail smtp):
(Укажите свое имя пользователя и пароль gmail. Конечно, вы можете использовать любой другой SMTP-сервер).
Теперь убедитесь, что ваш php.ini имеет правильный sendmail_path. Следует читать как:
sendmail_path = /usr/sbin/sendmail -t
( Из комментариев @ dima-l и @ omar-sabic : вам не нужно указывать ssmtpздесь, потому что установка должна была создать символическую ссылку, на /usr/sbin/sendmailкоторую правильно указывает ssmtp. В противном случае вы должны указать sendmail_path = /usr/sbin/ssmtp -t)
Перезагрузите apache, и ваш php сможет отправлять исходящие письма прямо сейчас.
Я думаю, что вы имели в виду sendmail_path = /usr/sbin/ssmtp -t. Это сработало, спасибо
Омер Сабик
1
ssmtp должен создать символическую ссылку для /usr/sbin/sendmail, которая правильно указывает на ssmtp. Таким образом, использование sendmail_path = /usr/sbin/sendmail -tдолжно работать так же
Дима Л.
2
Подробнее о настройке ssmtp(нашел несколько полезных заметок): Как настроить PHP почту в Debian - этот вопрос + эта ссылка помогла настроить программу.
gskema
1
Для gmail подумайте, что вы должны настроить свою учетную запись google, чтобы она могла работать в «небезопасных приложениях». См support.google.com/accounts/answer/6010255
aesede
1
Я также должен был добавить следующую строку: FromLineOverride=YESчтобы избежать следующей ошибки:550 5.7.60 SMTP; Client does not have permissions to send as this sender
Caumons
29
PHP требует SMTP-клиента для отправки почты. Вы можете установить полнофункциональный агент пересылки почты (MTA), такой как Postfix, для обслуживания этой функции, но это излишне, если вам нужно только отправлять почту через PHP. Вместо этого установите msmtp . Это легкий и гораздо проще в настройке.
Установить MSMTP
sudo apt-get install msmtp-mta ca-certificates
Настройте это
Создайте новый файл конфигурации:
sudo vi /etc/msmtprc
... со следующей информацией о конфигурации:
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <username@example.net>
password <password>
from <address-to-receive-bounces@example.net>
syslog LOG_MAIL
Вам необходимо заменить данные конфигурации, представленные всем, что находится внутри «<» и «>» (включительно, удалите их). Для хоста / имени пользователя / пароля используйте ваши обычные учетные данные для отправки почты через вашего почтового провайдера.
Конечно, 'sudo vi /etc/php5/conf.d' без php.ini не будет работать. В моем случае (Ubuntu) мне пришлось отредактировать '/etc/php5/apache2/php.ini', а также перезапустить apache 'sudo /etc/init.d/apache2 reload', чтобы он заработал.
Деян
1
Кстати, вы можете проверить свою конфигурацию msmtprc, используя:cat <<EOF | msmtp <receiver@test.com> Subject: test This is a test! EOF
Dejan
Было бы хорошо, но это не работает для меня. Ничего не появляется в его журнале. Кажется, все в порядке, но не игра в кости.
Джеймс Т Снелл
2
Чтобы сделать msmtp доступным для всей системы, установите «msmtp-mta».
Колан
1
Если вы слишком буквальны, как я в следующих инструкциях, вы фактически не сохраняете скобки <> в файле конфигурации. Мне понадобилось 20 минут, чтобы понять это
де Раад
4
Должно быть простое исправление. Вам просто нужно установить Postfix, который выполняет фактическую рассылку.
sudo apt-get install postfix
Вы хотите запустить это из терминала (а не из центра программного обеспечения), потому что он должен задать вам несколько вопросов по настройке. Вы должны принять все значения по умолчанию (только локальные и т. Д.).
Это старый вопрос, и на него есть достойные ответы выше, но я нуждался eximв своей среде. Кроме того, сначала убедитесь, что у вас установлен sendmail ( $ which sendmail- должен возвращать что-то вроде / usr / sbin / sendmail). Я нашел хорошее руководство на linode.com , но суть:
У меня есть одна вещь, которую нужно добавить о «фиктивной учетной записи gmail»:
Настоятельно рекомендуется, потому что вы должны настроить свою учетную запись Gmail, чтобы разрешить менее безопасные приложения: https://www.google.com/settings/u/0/security/lesssecureapps.
В противном случае вы получите «войдите в систему с помощью веб-браузера. а затем попробуйте еще раз "ошибка в вашем /var/log/mail.logфайле.
Также я обнаружил, что получаю сообщение об ошибке тайм-аута, если я не отправляю серверу gmail smtp мой корневой сертификат. Сделать это:
sudo nano /etc/postfix/main.cf
добавьте следующее в конец файла
smtp_tls_CAfile = /etc/postfix/cacert.pem
Затем скопируйте корневой сертификат thawte в cacert.pemфайл:
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
Я обнаружил, что решения, предоставленные Dima L., являются наиболее простым и легким в использовании.
Просто некоторые дополнения для большей ясности в настройке. Вы должны оставить комментарий hostnameв /etc/ssmtp/ssmtp.confфайле. Пример ssmtp.confфайла, как показано ниже:
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
AuthUser=mail@yourdomain.com
AuthPass=YOUREMAILPASSWORD
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
#hostname=
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
Ответы:
Из почтового руководства php:
Это означает, что вам нужно установить какой-нибудь почтовый сервер и настроить php для его использования. Обычно этот почтовый сервер является постфиксом в Ubuntu. Однако - если сторона php, которую вы кодируете, в конечном итоге будет храниться на стороне хостинг-сервиса (например, xmission), то, скорее всего, почтовый сервер там уже будет установлен. В этом случае просто протестируйте свой сайт онлайн, а не локально.
Если вам нужно протестировать его в вашей собственной системе или вы хотите разместить его на своем домашнем сервере, выполните следующие действия:
Постфиксная установка
Установка: postfix /
sudo apt-get install postfix
Во время процесса вас спросят, в каком режиме вы хотите установить postfix. Есть четыре возможных режима:Остальные параметры установки зависят от вашего выбора этой общей конфигурации.
Скорее всего, вы выберете спутниковую установку. Это означает, что почта будет отправлена через внешнего провайдера. В качестве smtp-сервера (сервера исходящей почты) вам нужно будет указать своих провайдеров smtp. Остальные варианты говорят сами за себя.
Конфигурация после установки
Большинство smtp-серверов требуют аутентификации по паролю для отправки почты. Поэтому postfix нужно будет знать этот пароль. Также есть такие вещи, как шифрование, которое нужно учитывать (что вам придется гуглить). Вот как вы настраиваете postfix с использованием аутентификации по паролю (sasl):
Установите libsasl2-modules и sasl2-bin , щелкнув значки Центра программного обеспечения или из терминала, используя:
Включите sasl-auth, добавив эти строки в
/etc/postfix/main.cf
Создайте файл
/etc/postfix/sasl_password
с такой строкой:Подставьте реальный пароль, имя пользователя и smtp-адрес.
Обновление постфикса:
Вы , возможно , придется обойти «разрешение отказано» ошибка по
chown postfix:postfix /etc/postfix
заранее.Это должно делать это в большинстве случаев. Тем не менее, некоторые провайдеры SMTP требуют определенного адреса в качестве отправителя или шифрования.
Связанный: PEAR :: Mail интерфейс также может быть интересен для вас.
Gmail (и, возможно, другим службам) может не понравиться то, что вы пытаетесь отправлять почту таким образом, поскольку это может считаться небезопасным по их стандартам, и это может заблокировать вашу попытку, т. Е. На экране ничего не произойдет, или какое-то место всего процесса заблокирует ваша аутентификация. Также ваш POP3 должен быть включен.
Чтобы противостоять этому, смотрите здесь. (Если вы хотите быть в безопасности, создайте фиктивную учетную запись Gmail)
источник
Как уже отмечалось, postfix будет излишним, если вам просто нужно отправлять электронные письма от php при разработке приложений на вашем домашнем компьютере.
Я лично использую очень простой и легкий пакет ssmtp. Он будет использовать любой SMTP-сервер для отправки исходящих писем. Установите его, запустив:
Затем отредактируйте
/etc/ssmtp/ssmtp.conf
файл, закомментируйте существующую строку mailhub и добавьте следующие строки (этот пример для сервера gmail smtp):(Укажите свое имя пользователя и пароль gmail. Конечно, вы можете использовать любой другой SMTP-сервер).
Теперь убедитесь, что ваш php.ini имеет правильный
sendmail_path
. Следует читать как:( Из комментариев @ dima-l и @ omar-sabic : вам не нужно указывать
ssmtp
здесь, потому что установка должна была создать символическую ссылку, на/usr/sbin/sendmail
которую правильно указываетssmtp
. В противном случае вы должны указатьsendmail_path = /usr/sbin/ssmtp -t
)Перезагрузите apache, и ваш php сможет отправлять исходящие письма прямо сейчас.
источник
sendmail_path = /usr/sbin/ssmtp -t
. Это сработало, спасибо/usr/sbin/sendmail
, которая правильно указывает на ssmtp. Таким образом, использованиеsendmail_path = /usr/sbin/sendmail -t
должно работать так жеssmtp
(нашел несколько полезных заметок): Как настроить PHP почту в Debian - этот вопрос + эта ссылка помогла настроить программу.FromLineOverride=YES
чтобы избежать следующей ошибки:550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHP требует SMTP-клиента для отправки почты. Вы можете установить полнофункциональный агент пересылки почты (MTA), такой как Postfix, для обслуживания этой функции, но это излишне, если вам нужно только отправлять почту через PHP. Вместо этого установите msmtp . Это легкий и гораздо проще в настройке.
Установить MSMTP
Настройте это
Создайте новый файл конфигурации:
... со следующей информацией о конфигурации:
Вам необходимо заменить данные конфигурации, представленные всем, что находится внутри «<» и «>» (включительно, удалите их). Для хоста / имени пользователя / пароля используйте ваши обычные учетные данные для отправки почты через вашего почтового провайдера.
Скажите PHP, чтобы использовать его
Добавьте эту единственную строку:
источник
cat <<EOF | msmtp <receiver@test.com> Subject: test This is a test! EOF
Должно быть простое исправление. Вам просто нужно установить Postfix, который выполняет фактическую рассылку.
Вы хотите запустить это из терминала (а не из центра программного обеспечения), потому что он должен задать вам несколько вопросов по настройке. Вы должны принять все значения по умолчанию (только локальные и т. Д.).
источник
Это старый вопрос, и на него есть достойные ответы выше, но я нуждался
exim
в своей среде. Кроме того, сначала убедитесь, что у вас установлен sendmail ($ which sendmail
- должен возвращать что-то вроде / usr / sbin / sendmail). Я нашел хорошее руководство на linode.com , но суть:с последующим:
который доставит вас в интерактивный редактор.
источник
Отличный ответ , контрафакт.
У меня есть одна вещь, которую нужно добавить о «фиктивной учетной записи gmail»:
Настоятельно рекомендуется, потому что вы должны настроить свою учетную запись Gmail, чтобы разрешить менее безопасные приложения: https://www.google.com/settings/u/0/security/lesssecureapps. В противном случае вы получите «войдите в систему с помощью веб-браузера. а затем попробуйте еще раз "ошибка в вашем
/var/log/mail.log
файле.Также я обнаружил, что получаю сообщение об ошибке тайм-аута, если я не отправляю серверу gmail smtp мой корневой сертификат. Сделать это:
добавьте следующее в конец файла
Затем скопируйте корневой сертификат thawte в
cacert.pem
файл:Вот ссылка, которую я использовал: Настройка Postfix для использования Gmail SMTP в Ubuntu | EasyEngine
Надеюсь, это сэкономит кому-то несколько волосяных фолликулов ...
источник
Я обнаружил, что решения, предоставленные Dima L., являются наиболее простым и легким в использовании.
Просто некоторые дополнения для большей ясности в настройке. Вы должны оставить комментарий
hostname
в/etc/ssmtp/ssmtp.conf
файле. Примерssmtp.conf
файла, как показано ниже:источник