Ayuda guardar email en BD
Publicado por Alfredo (3 intervenciones) el 30/11/2020 21:49:35
buenas tardes, quisiera saber si me pueden ayudar con un pequeño problema que tengo,
quisiera guardar los correos que llegan a un email en una base de datos y se reenvíen a otros dos destinatario,
tengo este código pero me da un error en el imap_open adjunto codigo y error, quisiera saber como podría solucionar el error,
o como podría hacer para lograr guardar los correos entrantes en la BD y que se reenvíen a otros 2 destinatarios.
Saludos, Gracias
quisiera guardar los correos que llegan a un email en una base de datos y se reenvíen a otros dos destinatario,
tengo este código pero me da un error en el imap_open adjunto codigo y error, quisiera saber como podría solucionar el error,
o como podría hacer para lograr guardar los correos entrantes en la BD y que se reenvíen a otros 2 destinatarios.
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
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$mysqli = new mysqli("localhost","xxxx","xxxxx","xxxxx");
// Las fechas de la anterior carga, para buscar solo los correos nuevos
$consulta = "SELECT fecha FROM EmailRecibidos order by fecha desc limit 1";
$resultado = $mysqli->query($consulta);
$fila = $resultado->fetch_row();
$ultima_fecha = $fila[0];
$ultima_nueva_fecha = strtotime('+1 second', strtotime($ultima_fecha));
$ultima_nueva_fecha = date('Y-m-d H:i:s', $ultima_nueva_fecha);
$fecha_actual = date("Y-m-d H:i:s");
// Datos del correo para guardar el inbox
$hostname = '{imap.gmail.com:993/imap/ssl/novalidate-cert}';
$username = 'correo@corporativo.com'; $password = 'contraseña';
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
print_r(imap_errors());
$MC = imap_check($inbox);
$result = imap_fetch_overview($inbox,"1:{$MC->Nmsgs}",0);
foreach ($result as $overview) {
// Estas lineas son para formatear los datos para ser guardados en MySQL sin errores.
$unixTimestamp = strtotime($overview->date);
$fecha = date("Y-m-d H:i:s", $unixTimestamp);
$header = imap_headerinfo($inbox, $overview->msgno);
$desde = $header->from[0]->mailbox . "@" . $header->from[0]->host;
$asunto = imap_utf8($overview->subject);
$cuerpo = quoted_printable_decode(imap_fetchbody($inbox,$overview->msgno,1));
// Guardo los correos nuevos en la DB
$mysqli->query("INSERT INTO EmailRecibidos VALUES ($overview->msgno, '$fecha', '$desde', '$asunto', '$cuerpo')");
}
// Comparo las fechas, para ver si existen nuevos correos (para re-enviar)
$resultado2 = $mysqli->query("SELECT * FROM EmailRecibidos WHERE fecha BETWEEN '$ultima_nueva_fecha' AND '$fecha_actual'");
$num = $resultado2->num_rows;
// Se re-envia cualquier correo nuevo.
if ($num>0) {
while($row = $resultado2->fetch_assoc()) {
$id = $row["id"];
$fecha = $row["fecha"];
$desde = $row["desde"];
$asunto = utf8_decode($row["asunto"]);
$cuerpo = utf8_decode($row["mensaje"]);
echo "Los correo se han re-enviado con exito";
$to = "correo1@corporativo.com"; //editar despues
$to2 = "correo2@corporativo.com"; //editar despues
$subject = "Redireccion de correo cliente";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers = "From: correo@corporativo.com" . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$message = "
<html>
<head>
<title>HTML</title>
</head>
<body>
<h1>#{$id} - Fecha: ({$fecha}) - Desde: {$desde} Asunto: {$asunto}</h1>
<br><br>
<p>Cuerpo: $cuerpo</p>
</body>
</html>";
mail($to, $subject, $message, $headers);
mail($to2, $subject, $message, $headers);
}
} else {
echo "No existen correos nuevos";
}
?>
1
2
3
4
5
6
7
8
9
10
11
12
PHP Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl/novalidate-cert} in /Apps/toolbox/cl/bash/email.php on line 20
Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl/novalidate-cert} in /Apps/toolbox/cl/bash/email.php on line 20
Cannot connect to Gmail: Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Invalid credentials (Failure)PHP Notice: Unknown: Retrying PLAIN authentication after [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=1) in Unknown on line 0
Notice: Unknown: Retrying PLAIN authentication after [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=1) in Unknown on line 0
PHP Notice: Unknown: Retrying PLAIN authentication after [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=1) in Unknown on line 0
Notice: Unknown: Retrying PLAIN authentication after [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=1) in Unknown on line 0
PHP Notice: Unknown: Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=2) in Unknown on line 0
Notice: Unknown: Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=2) in Unknown on line 0
Saludos, Gracias
Valora esta pregunta
0