php.ini & SMTP= - ¿Cómo se pasa el nombre de usuario y la contraseña?
Pregunta
My ISP
La cuenta requiere que envíe un nombre de usuario y contraseña para llamadas salientes. SMTP
correo.
Como lo consigo PHP
para usar esto al ejecutar php.mail()?
El php.ini
El archivo solo contiene entradas para el servidor. (SMTP= )
y From: (sendmail_from= )
.
Solución
PHP mail()
El comando no admite la autenticación.Sus opciones:
- PHPMailer- Tutorial
- PERA - Tutorial
- Funciones personalizadas: vea varias soluciones en la sección de notas: http://php.net/manual/en/ref.mail.php
Otros consejos
Aplico los siguientes detalles en el archivo php.ini.Funciona bien.
SMTP = smtp.example.com
smtp_port = 25
username = info@example.com
password = yourmailpassord
sendmail_from = info@example.com
Estos detalles son los mismos que en la configuración de Outlook.
Usar Sendmail falso para Windows para enviar correo.
- Crea una carpeta llamada
sendmail
enC:\wamp\
. - Extraiga estos 4 archivos en
sendmail
carpeta:sendmail.exe
,libeay32.dll
,ssleay32.dll
ysendmail.ini
. - Luego configura
C:\wamp\sendmail\sendmail.ini
:
smtp_server=smtp.gmail.com smtp_port=465 auth_username=user@gmail.com auth_password=your_password
Lo anterior funcionará con una cuenta de Gmail.Y luego configura php.ini:
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
Ahora reinicie Apache y eso es básicamente todo lo que necesita hacer.
PHP hace ¡tenga autenticación en el comando de correo!
Lo siguiente me funciona en 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
Prefiero el PHPMailer herramienta ya que no requiere PEAR.Pero de cualquier manera, tienes un malentendido:no desea una configuración de todo el servidor PHP para el usuario y la contraseña SMTP.Esta debería ser una configuración por aplicación (o por página).Si desea utilizar la misma cuenta en diferentes páginas PHP, agréguela a algún tipo de archivo settings.php.
Después de trabajar todo el día en esto, finalmente encontré una solución.Así es como envío desde Windows XP con WAMP.
- Utilice el servidor SMTP de Google.Probablemente necesites una cuenta.
- Descargar e instalar Correo falso.Lo acabo de descargar, lo descomprimí y lo puse en la carpeta WAMP.
- Cree un archivo PHP de prueba.Vea abajo.
<?php $message = "test message body"; $result = mail('recipient@some-domain.com', 'message subject', $message); echo "result: $result"; ?>
- Actualice su archivo php.ini y su archivo sendmail.ini (sendmail.ini está en la carpeta sendmail).
- Verifique el archivo error.log en la carpeta sendmail que acaba de crear si no funciona.
Referencia:
- Instale Postfix (compatible con Sendmail).
- Editar
/etc/postfix/main.cf
leer:
#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
- Crear
/etc/postfix/sasl_passwd
, ingresar:
smtp.server.net username:password
Tipo #
/usr/sbin/postmap sasl_passwd
Entonces corre:
service postfix reload
Ahora PHP ejecutará el correo como de costumbre con el sendmail -t -i
comando y Postfix lo interceptará y lo transmitirá a su servidor SMTP que proporcionó.
Utilice Mail::factory en el paquete Mail PEAR. Ejemplo.
Estas respuestas están desactualizadas y depreciadas.Mejores prácticas..
composer require phpmailer/phpmailer
El siguiente en su archivo sendmail.php solo requiere lo siguiente
# 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";
}
Esto se puede configurar como quieras.
Considerando una respuesta en esta pregunta, En PHP 4, el paquete PEAR Mail normalmente ya está instalado, y este tutorial realmente simple le muestra las pocas líneas de código que necesita agregar a su archivo php. http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm
- Instalar lo último hMailServidor."Ejecute hMailServer Administrator" en el último paso.
- Conéctese a "localhost".
- "Agregar dominio..."
- Establecer "127.0.0.1". Como "dominio", haga clic en "Guardar".
- "Configuración" > "Protocolos" > "SMTP" > "Entrega de correo electrónico"
- Establezca "localhost" como "nombre de host local", proporcione sus datos en la sección "Retransmisor SMTP", clic en Guardar".
- "Configuración" > "Avanzado" > "Rangos de IP" > "Mi PC"
- Desactive la casilla de verificación "Direcciones de correo electrónico externas a externas" en el grupo "Requerir autenticación SMTP".
- Si ha modificado php.ini, reescriba estos 3 valores:
"SMTP = servidor local",
"smtp_port = 25",
"; sendmail_path = ".
Crédito: ¿Cómo configurar WAMP (localhost) para enviar correo electrónico usando Gmail?