PHP - Ayuda PHPmailer local y servidor

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

Ayuda PHPmailer local y servidor

Publicado por Orion (45 intervenciones) el 19/10/2017 23:25:55
Buenos dias,

Necesito alguna persona que sea capaz de ayudarme para que me funcione el envio de mails con el phpmailer tanto en local como en servidor...

El codigo creo que lo tengo perfectamente, no se que podra fallar...

Muchas gracias,

Un saludo.
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
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ayuda PHPmailer local y servidor

Publicado por xve (6935 intervenciones) el 20/10/2017 08:51:04
Hola Orion, exactamente que problema tienes?
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 Alejandro

Ayuda PHPmailer local y servidor

Publicado por Alejandro (54 intervenciones) el 20/10/2017 14:03:12
Orion,

La librería PHPMailer que estas usando, requiere que tu sistema operativo tenga instalado Sendmail,
Se me ocurre que podrías dejar de lado tu código y probar el siguiente, directo en tu Hosting, ya que también llama a una libreria, pero esta por default en Linux,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
	$email = 'aaguayonitrigual@gmail.com';
	$emailTo = 'infoplanltda@gmail.com';
 
	$subject = 'Es un correo de prueba';
 
	$body = template($email);
 
	$headers = "From: " . strip_tags($email) . "\r\n";
	$headers .= "MIME-Version: 1.0\r\n";
	$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
 
	mail($emailTo, $subject, $body, $headers);
 
	function template($email){
		$contenido = '<h1>Hola '.$email.'</h1><br><p>..Mi texto..</p>';
	}
?>

Saludos,
Desde Chile
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: 70
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda PHPmailer local y servidor

Publicado por Orion (45 intervenciones) el 20/10/2017 19:27:20
Este es el codigo que tengo:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
function recoverypass($email){
 
 
  // Strip Email
 
  $stripemail = strip_tags($email);
 
 
 
  // conexion de base de datos
 
  $conexion = Conexion::singleton_conexion();
 
 
 
  $SQL = 'SELECT * FROM '.SSPREFIX.'usuarios WHERE email = :email LIMIT 1';
 
  $sentence = $conexion -> prepare($SQL);
 
  $sentence -> bindParam(':email',$stripemail, PDO::PARAM_STR);
 
  $sentence -> execute();
 
  $resultados = $sentence -> fetchAll();
 
  if (empty($resultados)){
 
 
 
    return 1;
 
 
 
  }else{
 
 
 
    // Generamos Password y lo ciframos    
 
    $passgenerated = generateRandomString();
 
    $newpass = sha1(SALT.$passgenerated.PEPER);
 
 
 
    $NewPassSQL = 'UPDATE '.SSPREFIX.'usuarios SET password = :password WHERE email = :email';
 
    $stnpass = $conexion -> prepare($NewPassSQL);
 
    $stnpass -> bindParam(':password', $newpass , PDO::PARAM_STR);
 
    $stnpass -> bindParam(':email', $stripemail, PDO::PARAM_STR);
 
    $stnpass -> execute();
 
 
 
    $dataexplode = congifurationmailrecover();
 
    $parsedata = explode("|", $dataexplode);
 
 
 
    $htmlhead = '<!DOCTYPE html><html><body>';
 
    $htmlfooter = '</body></html>';
 
    $messageone = '<p>'.$parsedata[6].'</p></p><p></p>';
 
    $activationlink = '<p><label>Tu nueva contraseña es: <strong>'.$passgenerated.'</strong></label></p>';
 
 
 
    // Envio de Correo 
 
    $mail = new PHPMailer;
 
    $mail->isSMTP();
 
    $mail->Host = $parsedata[0]; // especiificar el servidor smtp
 
    $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => true, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
 
    $mail->SMTPSecure = 'tls';
 
    $mail->Username = $parsedata[3]; // correo desde el que se enviara
 
    $mail->Password = $parsedata[4]; // password del correo
 
    $mail->Port = $parsedata[1];     // el puerto por defecto para SMTP es 587 pero puede ser otro
 
    $mail->setFrom($parsedata[3], $parsedata[2]);  // remitente, el segundo paramtero es el nombre
 
    $mail->addAddress($stripemail);   // destino
 
    $mail->isHTML(true);
 
    $mail->Subject = 'Recuperación de Cuenta';   // Asunto
 
    $mail->Body = $htmlhead.$messageone.$activationlink.$htmlfooter;
 
    $mail->send();
 
 
	echo '<script>window.location.href = "index.php"</script>';
 
 
 
  }
 
}
 
function generateRandomString($length = 6) {
    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
 
 
function congifurationmailrecover(){
   // conexion de base de datos
   $conexion = Conexion::singleton_conexion();
 
   $SQL = 'SELECT * FROM '.SSPREFIX.'socialconfig WHERE id = 3';
   $sentence = $conexion -> prepare($SQL);
   $sentence -> execute();
   $resultados = $sentence -> fetchAll();
   if(empty($resultados)){
   }else{
      foreach ($resultados as $key){
        $data = $key['smtp'].'|'.$key['port'].'|'.$key['fromname'].'|'.$key['mail'].'|'.$key['password'].'|'.$key['url'].'|'.$key['renewmessage'];
        return $data;
      }
   }
}


En mi base de datos:

- smtp: smtp.gmail.com
- port: 465
- fromname: Webmaster
- mail: miemail
- password: mipassword
- url: http://wwww.thesiteurl.com/ (no lo utilizo para nada).
- renewmessage: 3


He ido a php.ini y he añadido: sendmail_path ="C:\xampp\sendmail\sendmail.exe"
He ido a sendmail.ini y he añadido:
- smtp_server=smtp.gmail.com
- smtp_port=465
- auth_username=miemail
- auth_password=mipassword


¿Algo me sobra de todo lo que he puesto para que funcione?, ¿Algo me falta?

¿Si añado el codigo propuesto por Alejandro, en que parte lo tengo que añadir?
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