PHP - problemas con PHPmailer

 
Vista:
sin imagen de perfil
Val: 44
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

problemas con PHPmailer

Publicado por Nicolás (24 intervenciones) el 24/02/2017 16:21:11
Hola. Estoy implementando el envío de mail por PHPmailer. Lo estoy ocupando a través de localhost con TestMailServer como servidor de mails. Tengo el archivo php.ini bien configurado. En un mismo directorio tengo todos los archivos, los de phpmailer (class.phpmailer.php, PHPMailerAutoload.php, etc...) y mis propios archivos (form.HTML, smtp.php)

form.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML>
<html lang="">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <form action="smtp.php" method="post">
        <h1>Formulario de Ejemplo</h1>
        <label>Nombre</label>
        <input type="text" name="nombre" /><br>
        <label>Email</label>
        <input type="email" name="correo" /><br>
        <label>Comentarios</label>
        <textarea name="comentarios"></textarea><br>
        <input name="enviar" type="submit" value="Enviar" />
    </form>
</body>
</html>

smtp.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
require 'class.phpmailer.php';
 
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = "localhost";
$mail->Port = 25;
$mail->SMTPAuth = false;
$mail->From       = $_POST['correo']; //Remitente de Correo
$mail->FromName   = $_POST['nombre']; //Nombre del remitente
$to = "postmaster@localhost"; //Para quien se le va enviar
$mail->AddAddress($to);
$mail->Subject = 'Prueba PHPMailer SMTP';
$mail->msgHTML(file_get_contents('form2.html'), dirname(__FILE__));
//$mail->MsgHTML($body);
$mail->IsHTML(true); // Enviar como HTML
$mail->Send();//Enviar
 
if (!$mail->send()) {
    echo "Error: " . $mail->ErrorInfo;
} else {
    echo "Correo enviado!";
}
//http://www.ideaschile.cl/correos-con-php-mailer-localhost.php
?>

Cuando ejecuto el código aparece este error:
Parse error: syntax error, unexpected '$mail' (T_VARIABLE) in C:\xampp\htdocs\.......\smtp.php on line 4

Alguien me puede ayudar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

problemas con PHPmailer

Publicado por oscar (10 intervenciones) el 24/02/2017 22:51:59
pruebe agregandole los parentesis al final asi new PHPMailer(); si no cambie el nombre de la variable $mail por otro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

problemas con PHPmailer

Publicado por Alberto (12 intervenciones) el 24/02/2017 23:21:14
Error de sintaxis, $mail = new PHPMailer(); // Ojo con los parentesis.

Pero al parecer estas requiriendo una libreria que en el ejemplo de donde lo estas sacando, no es correcta:

require '../PHPMailerAutoload.php'; // Tu estas importando class.phpmailer.php, entonces por ende puedes inicializar el objeto como lo tienes actualmente y tambien es correcto.

$mail = new PHPMailer;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 44
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

problemas con PHPmailer

Publicado por Nicolás (24 intervenciones) el 25/02/2017 16:48:59
He puesto los paréntesis correspondientes $mail = new PHPMailer(); el cambio de la variable $mail no tiene ninguna incidencia en la ejecución del código. Pareciera que la librería class.phpmailer.php está bien ocupada.
Ahora me aparece este error:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\...\smtp.php on line 23.
line23:
1
if (!$mail->send()) {
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

problemas con PHPmailer

Publicado por Alberto (12 intervenciones) el 25/02/2017 20:06:02
Intenta lo que te comente de cambiar la librería que requieres al principio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 44
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

problemas con PHPmailer

Publicado por Nicolás (24 intervenciones) el 27/02/2017 14:57:10
Cambié require 'class.phpmailer.php' por require 'PHPMailerAutoload.php' pero siempre es el mismo error:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\...\smtp.php on line 23
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

problemas con PHPmailer

Publicado por Alberto (12 intervenciones) el 28/02/2017 21:58:33
Hola, tienes dos veces la función $mail->send(); una en la linea 19 y otro en la linea 21, checa quitar la de la linea 19 a ver si te sigue marcando el error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 44
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

problemas con PHPmailer

Publicado por Nicolás (24 intervenciones) el 01/03/2017 13:52:57
Lamentablemente es lo mismo. He visto otros códigos de esta librería y como anteponen try{} a un condicional. Yo lo hice también de esta forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
require_once('phpmailer/class.phpmailer.php');
 
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = "localhost";
$mail->Port = 25;
$mail->SMTPAuth = false;
$mail->From       = $_POST['correo']; //Remitente de Correo
$mail->FromName   = $_POST['nombre']; //Nombre del remitente
$to = "postmaster@localhost"; //Para quien se le va enviar
$mail->AddAddress($to);
$mail->Subject = 'Prueba PHPMailer SMTP';
$mail->msgHTML(file_get_contents('form2.html'), dirname(__FILE__));
//$mail->MsgHTML($body);
$mail->IsHTML(true); // Enviar como HTML
$mail->Send();//Enviar
$mail->addAttachment('images/imagen_adjunta.png');
 
try {
if (!$mail->send()) {
    echo "Error: " . $mail->ErrorInfo;
} else {
    echo "Correo enviado!";
}
}
?>

Ahora el error es éste:
Parse error: syntax error, unexpected '"Error: "' (T_CONSTANT_ENCAPSED_STRING) in C:\xampp\htdocs\...smtp.php on line 24

line 24: echo "Error: " . $mail->ErrorInfo;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 44
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

problemas con PHPmailer

Publicado por Nicolás (24 intervenciones) el 01/03/2017 15:51:09
Cambié el código y ahora funciona.
smtp.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
require 'class.phpmailer.php';
//obtener campos de formulario
$correo = $_POST['correo'];
$nombre = $_POST['nombre'];
$comentarios = $_POST['comentarios'];
try {
	$mail = new PHPMailer(true); //Nueva instancia, con las excepciones habilitadas
	$mail->IsMail();                           // Usamos el metodo SMTP de la clase PHPMailer
	$mail->SMTPAuth   = false;                  // habilitado SMTP autentificación
	$mail->Port       = 25;                    // puerto del server SMTP
	$mail->Host       = "localhost"; // SMTP server
	$mail->From       = $correo; //Remitente de Correo
	$mail->FromName   = $nombre; //Nombre del remitente
	$to = "postmaster@localhost"; //Para quien se le va enviar
	$mail->AddAddress($to);
	$mail->Subject  = "Mi primer mensaje con PhpMailer"; //Asunto del correo
        $mail->msgHTML($comentarios);
	$mail->IsHTML(true); // Enviar como HTML
	$mail->Send();//Enviar
	echo 'El Mensaje ha sido enviado.';
} catch (phpmailerException $e) {
	echo $e->errorMessage();//Mensaje de error si se produciera.
}
//http://desarrollowebtutorial.com/configurar-phpmailer-smtp-mail-sendmail-php/
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar