Как иметь мой PHP, Отправляют почту?

Я установил Ubuntu 11.04, ЛАМПА с помощью tasksel.

Я нахожу это PHP mail() не работает.

Я предполагаю, что должен включить его или что-то? Как я делаю это?

71
задан 12 August 2012 в 07:29

7 ответов

Из почтового руководства php:

Требования

Чтобы почтовые функции были доступны, PHP требует установленной и рабочей почтовой системы. Программа, которая будет использоваться, определяется параметрами конфигурации в файле php.ini.

Это означает, что необходимо установить своего рода mailserver и настроить php для использования его. Обычно этот mailserver является постфиксом в Ubuntu. Однако - если php сторона Вы кодируете, будет в конечном счете сохранен на стороне услуги хостинга (например, xmission), почтовый сервер будет, скорее всего, уже установлен там. В этом случае просто протестируйте свой сайт онлайн вместо локально.

Если необходимо протестировать его в собственной системе или средний для хостинга его на собственном сервере дома, чем возобновляют:

Постфиксная установка

Установка: постфикс Install postfix / sudo apt-get install postfix Во время процесса Вас спросят, в котором режиме Вы хотите установленный постфикс. Существует четыре возможных режима:

  • Интернет: Ваш собственный почтовый сервер.
  • Спутник: поставщик почтовых услуг экстерна (например, Google) будет использоваться для отправки и получения почты. Сервер не получит почты.
  • Smarthost: Смесь между двумя. Почта хранится локально, но отправляется через внешнюю поставщика почтовых услуг.
  • Локальный только: не коснется Вас. Это - системный интерн mailserver. Можно только отправить почту от пользователя пользователю в системе.

Остальная часть опций установки зависит от Вашего выбора этой общей конфигурации.

Скорее всего, Вы выберете спутниковую установку. Это означает, что почта будет отправлена с помощью поставщика экстерна. Как smtp-сервер (сервер исходящей почты) необходимо будет затем указать поставщиков smtp. Остальная часть опций сам объяснительная.

Конфигурация после установки

Большинство smtp-серверов требует, чтобы аутентификация по паролю отправила почту. Таким образом, постфикс должен будет знать тот пароль. Также существуют вещи как шифрование для рассмотрения (который необходимо будет погуглить). Это - то, как Вы настраиваете постфикс с помощью аутентификации по паролю (sasl):

  • libsasl2-модули Install libsasl2-modules установки и sasl2-мусорное-ведро Install sasl2-bin путем нажатия на значки Software Center или от терминального использования:

    sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
    
  • Включите sasl-автору путем добавления этих строк к /etc/postfix/main.cf

     # add to /etc/postfix/main.cf
     smtp_sasl_auth_enable = yes
     smtp_sasl_security_options = noplaintext noanonymous
     smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
    
  • Создайте файл /etc/postfix/sasl_password со строкой как:

     smtp.gmail.com USERNAME@gmail.com:USERPASSWORD
    

    Замените фактическим паролем, именем пользователя и smtp-адресный.

  • Постфикс обновления:

     sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password
     sudo postmap hash:/etc/postfix/sasl_password 
     sudo postmap /etc/postfix/sender_canonical
     sudo /etc/init.d/postfix restart   
    

    Вам, возможно, придется обойти 'разрешение, отклоненное' ошибка chown postfix:postfix /etc/postfix заранее.

Это должно сделать это в большинстве случаев. Все же некоторые smtp поставщики требуют определенного адреса как отправителя или шифрования.

Похожие страницы: ГРУША:: Почтовый интерфейс мог бы также представлять интерес для Вас.

Gmail (и возможно другие сервисы) не может понравиться он, что Вы пытаетесь отправить почте этот путь, поскольку это могли считать небезопасным их стандарты и заблокирует Вашу попытку, т.е. ничего не произойдет на экране, или где-нибудь целого процесса заблокировал бы Вашу аутентификацию. Также Ваш POP3 должен быть включен.

Противостоять, которые видят здесь. (Если Вы хотите быть на безопасной стороне, затем создайте фиктивную учетную запись Gmail),

51
ответ дан 22 November 2019 в 23:25

Должна быть простая фиксация. Просто необходимо установить Постфикс, который делает фактическое пользование электронной почтой.

sudo apt-get install postfix

Вы хотите выполнить это от терминала (а не центр программного обеспечения), потому что он должен спросить Вас несколько вопросов об установке. Необходимо быть находкой, чтобы просто принять все значения по умолчанию (локально-единственный, и т.д.).

4
ответ дан 22 November 2019 в 23:25

PHP требует, чтобы клиент SMTP отправил почту. Вы могли установить полнофункциональный агент передачи почты (MTA) как Постфикс для выполнения этой функции, но это - излишество, если только необходимо отправить почту через 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

Необходимо заменить данные конфигурации, представленные всем в" <" и">" (включительно, удалить их). Для хоста/имени пользователя/пароля используйте свои нормальные учетные данные для отправки почты через Вашу поставщика почтовых услуг.

Скажите PHP использовать его

sudo vi /etc/php5/apache2/php.ini

Добавьте эту одну строку:

sendmail_path = /usr/bin/msmtp -t
29
ответ дан 22 November 2019 в 23:25

Как уже отмечено, постфикс был бы излишеством, если просто необходимо послать электронные письма от php при разработке приложений на домашнем компьютере.

Я лично использую очень простой и легкий пакет ssmtp. Это будет использовать любой smtp сервер для отправки исходящих электронных писем. Установите его путем выполнения:

sudo apt-get install ssmtp

Затем редактирование /etc/ssmtp/ssmtp.conf файл, прокомментируйте существующую mailhub строку и добавьте следующие строки (этим примером является для Gmail smtp сервер):

mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>

(Введите свое имя пользователя 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)

Перезагрузите апача, и Ваш php должен смочь послать исходящие электронные письма теперь.

61
ответ дан 22 November 2019 в 23:25

Это - старый вопрос и выше существуют достойные ответы, но мне было нужно exim для моей среды. Кроме того, подтвердите, что у Вас есть sendmail, установленный во-первых ($ which sendmail - должен возвратить что-то как/usr/sbin/sendmail). Я нашел хорошее руководство по linode.com, но суть:

apt-get install exim4-daemon-light mailutils

сопровождаемый:

dpkg-reconfigure exim4-config

который получит Вас интерактивному редактору.

2
ответ дан 22 November 2019 в 23:25

Большой ответ, перепутать.

У меня есть одна вещь добавить о "фиктивной учетной записи 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

Вот ссылка, которую я использовал: Настройте Постфикс для Использования Gmail SMTP на Ubuntu | EasyEngine

Надо надеяться, это сохраняет кого-то несколько волосяных фолликулов...

1
ответ дан 22 November 2019 в 23:25

Я нашел, что решениями, предоставленными 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
0
ответ дан 22 November 2019 в 23:25

Другие вопросы по тегам:

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