Надсилання пошти з PHP, LAMPP та PostFix


9

Я намагаюся вже цілих два дні, і я просто не можу зробити найпростішу справу.

Проблема: Надсилання електронної пошти з PHP на мою адресу електронної пошти не працює

Я раніше працював з Windows і Sendmail (Sendmail був у пакеті XAMPP) і все було нормально. У пакеті XAMPP (1.7.7) для Linux не вбудований Sendmail. Отож, трохи погуглившись, я з’ясував, що Postfix краще вписується в середовище LAMPP.


Що я спробував поки що:

Я встановив Postfix і хотів налаштувати його так, щоб просто використовувати smtp-сервер мого приватного постачальника електронної пошти (як це було в Windows). Так я confogured мій php.ini , як це:

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

; For Win32 only.
;sendmail_from = me@example.com

sendmail_path = /etc/postfix
mail.add_x_header = On

Зауважте, що я прокоментував продукт "Тільки Win32". /Etc/postfix/main.cf виглядає наступним чином :

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

/ тощо / псевдоніми не змінюються:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc / postfix / sasl_password :

my.providers.smtp my_login:my_password

/ тощо / postfic / sender_canonical:

postmaster my.email@ddress.com

Що сталося:

Тож коли я це роблю

> sudo /etc/init.d/postfix start

все, здається, працює нормально, і /var/log/mail.log каже: "postbux / master ubuntu [9720]: запускається демон - версія 2.8.5, конфігурація / тощо / postfix"

Але коли я запускаю свій PHP-скрипт (який відмінно працював з Windows і Sendmail), він просто проходить і нічого не відбувається, навіть не зафіксована помилка.


Чого я насправді хочу досягти:

Я працюю локально на веб-сайті електронної комерції. Він працює добре на спеціальному веб-сервері, але я хочу також, щоб він міг працювати локально з очевидних причин. У деяких випадках він надсилає електронні листи, і я просто хочу мати можливість отримувати їх за допомогою Thunderbird або будь-яким іншим способом. Чи тут використовується Postfix overkill? Мені не потрібно отримувати електронні листи - я просто хочу зробити надіслані листи якось видимими. Я, здається, не міг знайти жодних корисних покрокових посібників для цього питання (ні стосовно Senmail, ні Postfix - але, якщо чесно, я дуже новачок у Linux).

Відповіді:


13

У вашому php.ini це:

sendmail_path = /etc/postfix

Повинен бути шлях до бінарного файлу sendmail (або сумісного).
Ви встановили його в каталог конфігурації Postfix, що невірно.

З історичних причин зазвичай /usr/bin/sendmailпідтримується як зв'язок сумісності.
sendmailбув навколо спочатку (я здогадуюсь) і майже все просто передбачає, що він знаходиться в встановленому MTA. Отже, коли це не так, заміна робить символьне посилання, так що нічого не порушується.


Велике спасибі! Хоча я не зовсім розумію, чому і яким чином працюють Sendmail і Postfix - це працює зараз! Не можу згадати, де я читав про налаштування його на постфікс, але це правильна установка в моєму випадку:sendmail_path = "/usr/sbin/sendmail -t -i"
Квасдунк

Додано трохи більше інформації - в основному вони не працюють разом як такі, у вас немає sendmail, але постфікс прикидається таким, оскільки стільки речей очікує, що воно буде там :) Ви можете однаково встановити sendmail_path, щоб вказувати на двійковий постфікс.
Цезій

1
Я пам'ятаю! У sendmail було виправлено помилку після помилки після помилки протягом багатьох років. В один момент ви можете включити в команду ~ / .forward тільки для кореневих команд, надіслати собі пошту і робити що завгодно в системі Unix / Linux. Був масовий Exodus, і нові поштові сервери включали в себе програму, схожу на sendmail, розроблену так, щоб поводитись як sendmail, так що всі інші програми, які побудували себе навколо sendmail, працюватимуть без додаткових зусиль.

Велике спасибі за додаткову інформацію! Зараз усе має сенс;) Я б дав вам ще +1, якщо зможу, але сподіваюся, що хтось інший, хто вважає це так само корисним, зробить це для мене :-D
Четвернок

1

Для надсилання пошти з localhost (WAMP, XAMP або LAMP) ви можете використовувати пакет PHPMailer

  • Натисніть тут, щоб завантажити з github https://github.com/shashidhark/PhpMailer та дотримуйтесь інструкцій, наведених у файлі readme.

Це буде та сама інструкція, що дана у файлі readme ..

WAMP (windows):

Спочатку потрібно відредагувати "php.ini". Щоб знайти цей файл, відобразить phpinfo, використовуючи наступний код з сервера WAMP. Створіть один файл php [setu.php] всередині C: / wamp / www / і додайте до цього файлу наступний вміст.

<?php
     echo phpinfo();
?>

Введіть localhost / settings.php у веб-переглядачі. Там шукайте "Завантажений файл конфігурації", який буде шлях до вашого php.ini .

У файлі php.ini видаліть; (напівкрапка), надану `extension = php_openssl.dll. Тепер налаштування сервера закінчено ...

  • Завантаживши папку PHPMailer з github,
  • Витягнути-> Скопіюйте повну папку у свою папку проекту, тобто C: / wamp / www /
  • Знайдіть файл index.php.
  • Змініть параметр як потрібно.
  • Потім у браузері введіть localhost / PHPMailer / index.php .
  • Тоді воно покаже успішне повідомлення, якщо електронний лист надіслано, інакше воно дасть повідомлення про помилку.

LAMP (Linux):

  • У випадку з Linux не потрібно редагувати файл php.ini, як я пояснив перший пункт під WAMP.

  • Ще однією зміною є проект або коренева папка документа.

  • У Linux основною кореневою папкою Document буде / var / www
  • Ви можете легко змінити кореневу папку Document. Для цього відвідайте https://stackoverflow.com/a/17612396/1925943
  • Скопіюйте PhpMailer в цю кореневу папку документа і відредагуйте index.php як потрібно.
  • Потім введіть localhost / PhpMailer / index.php у браузері.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.