php.ini & amp; SMTP = - come passi username & amp; parola d'ordine
Domanda
Il mio account ISP
richiede che invii un nome utente e un amp; password per posta SMTP
in uscita.
Come posso ottenere PHP
per usarlo quando eseguo php.mail ()?
Il file php.ini
contiene solo voci per server (SMTP =)
e Da: (sendmail_from =)
.
Soluzione
PHP mail ()
non supporta l'autenticazione. Le tue opzioni:
- PHPMailer - Tutorial
- PEAR - Tutorial
- Funzioni personalizzate: vedi le varie soluzioni nella sezione note: http://php.net /manual/en/ref.mail.php
Altri suggerimenti
Applico i seguenti dettagli sul file php.ini. funziona benissimo.
SMTP = smtp.example.com
smtp_port = 25
username = info@example.com
password = yourmailpassord
sendmail_from = info@example.com
Questi dettagli sono gli stessi delle impostazioni di Outlook.
Utilizza sendmail falso per Windows per inviare posta.
- Crea una cartella denominata
sendmail
inC: \ wamp \
. - Estrai questi 4 file nella cartella
sendmail
:sendmail.exe
,libeay32.dll
,ssleay32.dll
esendmail.ini
. - Quindi configurare
C: \ wamp \ sendmail \ sendmail.ini
:
smtp_server=smtp.gmail.com smtp_port=465 auth_username=user@gmail.com auth_password=your_password
-
Quanto sopra funzionerà con un account Gmail. E quindi configurare php.ini:
sendmail_path = " C: \ wamp \ sendmail \ sendmail.exe -t "
-
Ora riavvia Apache e questo è praticamente tutto ciò che devi fare.
PHP ha l'autenticazione sul comando mail!
Quanto segue funziona per me su WAMPSERVER (windows, php 5.2.17)
php.ini
[mail function]
; For Win32 only.
SMTP = mail.yourserver.com
smtp_port = 25
auth_username = smtp-username
auth_password = smtp-password
sendmail_from = you@yourserver.com
Preferisco lo strumento PHPMailer in quanto non richiede PEAR. Ma in entrambi i casi, hai un malinteso: non vuoi un'impostazione a livello di server PHP per l'utente e la password SMTP. Dovrebbe essere un'impostazione per app (o per pagina). Se vuoi usare lo stesso account su diverse pagine PHP, aggiungilo a un tipo di file settings.php.
Dopo aver lavorato tutto il giorno su questo, ho finalmente trovato una soluzione. Ecco come invio da Windows XP con WAMP.
- Utilizza il server SMTP di Google. Probabilmente hai bisogno di un account.
- Scarica e installa Sendmail falso . L'ho appena scaricato, decompresso e messo nella cartella WAMP.
- Crea un file PHP di prova. Vedi sotto.
<?php $message = "test message body"; $result = mail('recipient@some-domain.com', 'message subject', $message); echo "result: $result"; ?>
- Aggiorna il tuo file php.ini e il tuo file sendmail.ini (sendmail.ini si trova nella cartella sendmail).
- Controlla il file error.log nella cartella sendmail che hai appena creato se non funziona.
Riferimento:
- Installa Postfix (compatibile con Sendmail).
- Modifica
/etc/postfix/main.cf
per leggere:
#Relay config
relayhost = smtp.server.net
smtp_use_tls=yes
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_security_options = noanonymous
- Crea
/ etc / postfix / sasl_passwd
, inserisci:
smtp.server.net username:password
-
Digita #
/ usr / sbin / postmap sasl_passwd
-
Quindi eseguire:
service postfix ricaricare
Ora PHP eseguirà la posta come al solito con il comando sendmail -t -i
e Postfix la intercetterà e la inoltrerà al server SMTP che hai fornito.
Usa Mail :: factory nel pacchetto Mail PEAR. Esempio.
Queste risposte sono obsolete e ammortizzate. Best practice ..
composer require phpmailer/phpmailer
Il prossimo sul tuo file sendmail.php richiede solo quanto segue
# use namespace
use PHPMailer\PHPMailer\PHPMailer;
# require php mailer
require_once "../vendor/autoload.php";
//PHPMailer Object
$mail = new PHPMailer;
//From email address and name
$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";
//To address and name
$mail->addAddress("recepient1@example.com", "Recepient Name");
$mail->addAddress("recepient1@example.com"); //Recipient name is optional
//Address to which recipient will reply
$mail->addReplyTo("reply@yourdomain.com", "Reply");
//CC and BCC
$mail->addCC("cc@example.com");
$mail->addBCC("bcc@example.com");
//Send HTML or Plain Text email
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent successfully";
}
Questo può essere configurato come ti piace ..
Considerando una risposta in questa domanda , in PHP 4 il pacchetto PEAR Mail è in genere già installato e questo tutorial davvero semplice ti mostra le poche righe di codice che devi aggiungere al tuo file php http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm
- Installa l'ultimo hMailServer . " Esegui hMailServer Administrator " nell'ultimo passaggio.
- Connetti a " localhost " ;.
- " Aggiungi dominio ... "
- Imposta " 127.0.0.1. " come " Dominio " ;, fai clic su " Salva " ;.
- " Impostazioni " & Gt; & Quot; Protocolli " & Gt; & Quot; SMTP " & Gt; " Consegna di e-mail "
- Imposta " localhost " come " Nome host locale " ;, fornisci i tuoi dati nel " Relay SMTP " sezione , fai clic su " Salva " ;.
- " Impostazioni " & Gt; & Quot; avanzata " & Gt; "Intervalli IP" & Gt; " Risorse del computer "
- Disabilita " Indirizzi di posta elettronica esterni e esterni " la casella di controllo in " Richiedi autenticazione SMTP " gruppo.
- Se hai modificato php.ini, riscrivi questi 3 valori:
" SMTP = localhost " ;,
" smtp_port = 25 " ;,
" ; sendmail_path = " ;.
Credito: Come configurare WAMP (localhost) per inviare e-mail utilizzando Gmail?