Invio di mail con PHP, LAMPP e PostFix


9

Ci sto provando da 2 giorni interi e non riesco proprio a far funzionare la cosa più semplice.

Il problema: l'invio di e-mail da PHP al mio indirizzo e-mail non funziona

Ho lavorato con Windows e Sendmail (Sendmail era all'interno del pacchetto XAMPP) prima e tutto era OK. Il pacchetto XAMPP (1.7.7) per Linux non ha però Sendmail integrato. Quindi dopo aver cercato su Google un po 'ho scoperto che Postfix si adatta meglio a un ambiente LAMPP.


Quello che ho provato finora:

Ho installato Postfix e volevo configurarlo per utilizzare solo il server smtp del mio provider di posta elettronica privato (come ha fatto su Windows). Quindi ho configurato il mio php.ini in questo modo:

[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

Si noti che ho commentato il "solo Win32" roba. Il file /etc/postfix/main.cf è simile al seguente:

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

/ etc / alias è invariato:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc / postfix / sasl_password :

my.providers.smtp my_login:my_password

/ Etc / postfic / sender_canonical:

postmaster my.email@ddress.com

Che succede:

Quindi quando lo faccio

> sudo /etc/init.d/postfix start

tutto sembra funzionare bene e /var/log/mail.log dice: "ubuntu postfix / master [9720]: demone avviato - versione 2.8.5, configurazione / etc / postfix"

Ma quando eseguo il mio script PHP (che ha funzionato bene con Windows e Sendmail), scorre e non succede nulla, nemmeno un errore viene registrato.


Cosa voglio veramente ottenere:

Sto lavorando localmente su un sito Web di e-commerce. Funziona bene sul server web dedicato, ma voglio farlo funzionare anche localmente per ovvi motivi. In alcuni casi, invia e-mail e voglio solo essere in grado di riceverle con Thunderbird o in qualsiasi altro modo. Sta utilizzando Postfix eccessivo qui? Non ho bisogno di ricevere e-mail - voglio solo rendere visibili le e-mail inviate in qualche modo. Non sono riuscito a trovare utili tutorial passo-passo per questo problema (né riguardanti Senmail né Postfix - ma, a dire il vero, sono molto nuovo su Linux).

Risposte:


13

Nel tuo php.ini, questo:

sendmail_path = /etc/postfix

Dovrebbe essere il percorso del file binario sendmail (o compatibile).
L'hai impostato sulla directory di configurazione di postfix che non è corretta.

Per motivi storici, di solito /usr/bin/sendmailviene mantenuto come collegamento di compatibilità.
sendmailera prima in circolazione (immagino) e praticamente tutto presume che sia nell'MTA installato. Quindi, quando non lo è, la sostituzione crea un collegamento simbolico in modo che nulla si rompa.


Grazie mille! Anche se non capisco bene perché e in che modo Sendmail e Postfix lavorino insieme, ora funziona! Non ricordo dove ho letto sull'impostazione di postfix, ma questa è l'impostazione corretta nel mio caso:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk,

Aggiunte un po 'più di informazioni - in pratica non funzionano insieme come tali, non hai sendmail, ma Postfix sta fingendo di esserlo, perché così tante cose si aspetta che sia lì :) Puoi anche impostare sendmail_path in modo che punti il binario postfix.
Cesio

1
Io ricordo! sendmail ha avuto bug dopo bug dopo bug dopo bug per anni e anni. Ad un certo punto, potresti includere un comando solo root nel tuo ~ / .forward, mandarti una mail e fare qualunque cosa su un sistema Unix / Linux. Esodo di massa, e nuovi server di posta includevano un programma simile a sendmail progettato per comportarsi come sendmail in modo che tutti gli altri programmi che si erano costruiti attorno a sendmail funzionassero ancora senza alcuno sforzo aggiuntivo.

Grazie mille per le informazioni aggiuntive! Ora tutto ha più senso;) Ti darei un altro +1 se potessi, ma spero che qualcun altro che trova questo altrettanto utile lo farà per me :-D
Quasdunk il

1

Per inviare posta da localhost (WAMP, XAMP o LAMP) puoi usare il pacchetto PHPMailer

Questa sarà la stessa istruzione fornita nel file Leggimi.

WAMP (windows):

Per prima cosa devi modificare "php.ini" Per trovare questo file visualizza il phpinfo usando il seguente codice dal server WAMP. Crea un file php [setting.php] all'interno di C: / wamp / www / e aggiungi il seguente contenuto a quel file.

<?php
     echo phpinfo();
?>

Digita localhost / setting.php nel browser. C'è la ricerca di "File di configurazione caricato" Questo sarà il percorso del tuo php.ini .

Nel file php.ini rimuovere il; (punto e virgola) dato a `extension = php_openssl.dll. Ora l'impostazione del server è terminata ...

  • Dopo aver scaricato la cartella PHPMailer da github,
  • Estrai-> Copia l'intera cartella nella cartella del progetto, ad es. C: / wamp / www /
  • Trova il file index.php.
  • Cambia il parametro secondo le tue necessità.
  • Quindi nel browser digitare localhost / PHPMailer / index.php .
  • Quindi mostrerà un messaggio di successo se l'email viene inviata, altrimenti verrà visualizzato un messaggio di errore.

LAMPADA (Linux):

  • In caso di Linux, non è necessario modificare il file php.ini come ho spiegato prima punto sotto WAMP.

  • Un'altra modifica è la cartella principale del progetto o del documento è diversa.

  • In Linux la cartella principale del documento predefinita sarà / var / www
  • È possibile modificare facilmente la cartella principale del documento. Per quella visita https://stackoverflow.com/a/17612396/1925943
  • Copia PhpMailer nella cartella principale di questo documento e modifica index.php secondo le tue necessità.
  • Quindi digitare localhost / PhpMailer / index.php nel browser.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.