Mails con adjuntos y Activar SSL en PHP (Windows)

Resulta que necesitaba mandar mails desde una página web con datos adjuntos. Desde php se hace con un mail(destinatario, asunto, mensaje) y eso era todo… pero para agregar un archivo adjunto el cuento es otro.

Si lo quisiéramos hacer a mano, sería cosa de “desmenuzar” el archivo y agregarlo al header del mail😯 pero como nosotros no reinventamos la rueda, vamos a usar una librería llamada PHPMailer. En la misma página salen ejemplo para usar. En mi caso, el código quedo así:

<?php
	include("class.phpmailer.php");
	include("class.smtp.php");
	$mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->SMTPDebug = 1;
	$mail->SMTPAuth = true;
	$mail->SMTPSecure = "ssl";
	$mail->Host = "smtp.googlemail.com";
	$mail->Port = 465;
	$mail->Username = "mario.cares.c@gmail.com";
	$mail->Password = "macoy123";

	$mail->From = "mario.cares.c@gmail.com";
	$mail->FromName = "Mario Cares";
	$mail->Subject = "Asunto del Email";
	$mail->AltBody = "Este es un mensaje de prueba.";
	$mail->MsgHTML("<b>Este es un mensaje de prueba</b>.");
	$mail->AddAttachment("files/files.zip)";
	$mail->AddAddress("mcares@puertosolutions.cl", "Destinatario");
	$mail->IsHTML(true);
	if(!$mail->Send()) {
		echo "Error: " . $mail->ErrorInfo;
	} else {
		echo "Mensaje enviado correctamente";
	}
?>

En el ejemplo, mandamos el mail por medio de Gmail. Cambian los datos en referencia a su cuenta. También cambiar el from y el destinatarios.

El problema, es que cuando quería mandar el mail, me salía un mensaje como este:

Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?’

No tenía activado el módulo desde php.ini. Lo cambié (quitando el ; delante de extension=php_openssl.dll) y reinicié apache.

Tampoco funcionaba… revisé en la carpeta ext y si estaba el .dll. Revisando en el log de php decía

PHP Warning:  PHP Startup: Unable to load dynamic library ‘C:/AppServ\\php5\\ext\\php_openssl.dll’ – El sistema operativo no puede ejecutar %1.\r\n in Unknown on line 0

Y no entendía qué pasaba😯 . Buscando en google, encontré la solución😀

Resulta que los .dll de windows que usa php no funcionan bien x_X por lo que tienen que remplazarse por los que vienen en la carpeta de PHP.

Son ssleay32.dll y libeay32.dll, bajo System32 (o SysWOW64). Los renombran y mueven los que vienen en la carpeta PHP. Ahora si, reinician apache nuevamente y todo ok y funcionando😀

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en php. Guarda el enlace permanente.

2 respuestas a Mails con adjuntos y Activar SSL en PHP (Windows)

  1. Anónimo dijo:

    Buen aporte lo de las .dll

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s