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 =) .

È stato utile?

Soluzione

Il comando

PHP mail () non supporta l'autenticazione. Le tue opzioni:

  1. PHPMailer - Tutorial
  2. PEAR - Tutorial
  3. 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.

  1. Crea una cartella denominata sendmail in C: \ wamp \ .
  2. Estrai questi 4 file nella cartella sendmail : sendmail.exe , libeay32.dll , ssleay32.dll e sendmail.ini .
  3. Quindi configurare C: \ wamp \ sendmail \ sendmail.ini :
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=user@gmail.com
auth_password=your_password
  1. Quanto sopra funzionerà con un account Gmail. E quindi configurare php.ini:

      

    sendmail_path = " C: \ wamp \ sendmail \ sendmail.exe -t "

  2. 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.

  1. Utilizza il server SMTP di Google. Probabilmente hai bisogno di un account.
  2. Scarica e installa Sendmail falso . L'ho appena scaricato, decompresso e messo nella cartella WAMP.
  3. 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";
?>
  1. Aggiorna il tuo file php.ini e il tuo file sendmail.ini (sendmail.ini si trova nella cartella sendmail).
  2. Controlla il file error.log nella cartella sendmail che hai appena creato se non funziona.

Riferimento:

  1. Installa Postfix (compatibile con Sendmail).
  2. 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
  1. Crea / etc / postfix / sasl_passwd , inserisci:
smtp.server.net username:password
  1. Digita # / usr / sbin / postmap sasl_passwd

  2. 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

  1. Installa l'ultimo hMailServer . " Esegui hMailServer Administrator " nell'ultimo passaggio.
  2. Connetti a " localhost " ;.
  3. " Aggiungi dominio ... "
  4. Imposta " 127.0.0.1. " come " Dominio " ;, fai clic su " Salva " ;.
  5. " Impostazioni " & Gt; & Quot; Protocolli " & Gt; & Quot; SMTP " & Gt; " Consegna di e-mail "
  6. Imposta " localhost " come " Nome host locale " ;, fornisci i tuoi dati nel " Relay SMTP " sezione , fai clic su " Salva " ;.
  7. " Impostazioni " & Gt; & Quot; avanzata " & Gt; "Intervalli IP" & Gt; " Risorse del computer "
  8. Disabilita " Indirizzi di posta elettronica esterni e esterni " la casella di controllo in " Richiedi autenticazione SMTP " gruppo.
  9. 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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top