PHP - envio con php y adjunto por email

 
Vista:
Imágen de perfil de Francisco Javier
Val: 43
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

envio con php y adjunto por email

Publicado por Francisco Javier (19 intervenciones) el 08/07/2020 10:37:41
buenos días, tenía un problema con un envio de un formulario para ue el usuario me enviara una serie de datos y adjuntara su C.V. y me lo enviara a mi email, pero hay algo que no funciona, os envio el HTML y el php y me decis en que puedo fallar. en mi email he puesto"############" y hay un dato que no se que poner realmente y he puesto "?????????????". espero puedan ayudarme. este código me lo ha facilitado una de nuestras compañeras de la comunidad a la que se lo agradezco. Un saludo.


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
<!DOCTYPE html>
<html lang="es">
<head>
 <meta charset="UTF-8">
 <title>envio de emails con archivos adjuntos</title>
 <link rel="stylesheet" href="css/g1.css">
 <script src="http://code.jquery.com/jquery-latest.min.js"></script>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
 
</head>
<body>
 <div id="container">
 <h1>Envíenos su C.V.  <a href="">nombre de mi web</a></h1>
 
 <form action="send.php" method="post" enctype="multipart/form-data">
 <fieldset>
 <legend>rellena el formulario</legend>
 <ul>
 <li>
 <label for="nombre">Nombre:</label>
 <br>
 <input type="text" id="nombre" name="nombre" placeholder="Nombre" required>
 </li>
 <li>
 <label for="mail">E-mail:</label>
 <br>
 <input type="email" id="mail" name="email" placeholder="E-mail del emisor" required>
 </li>
 <br>
 
 <li>
 <label for="adjunto">Archivo adjunto</label>
 <br>
 <input type="file" id="adjunto" name="adjunto" required>
 </li>
 <li>
 <label for="asunto">Asunto:</label>
 <br>
 <input type="text" id="asunto" name="asunto" placeholder="Asunto" required>
 </li>
 <li>
 <label for="msn">Mensaje:</label>
 <br>
 <textarea name="msn" id="msn" rows="10" required></textarea>
 </li>
 <li>
 <input type="submit" value="Enviar">
 </li>
 </ul>
 </fieldset>
 </form>
 </div>
 <script>
$(document).ready(function(){
 $('form').submit(function(){
 if($('input[type="text"]').val() == '' || $('input[type="email"]').val() == '' || $('input[type="file"]').val() == '' || $('textarea').val() == ''){
 alert('Rellena todos los campos');
 return false;
 }
 });
 });
</script>
</body>
</html>


----------------------------------------------------------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
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
<?php
 
class Email {
 
 //nombre
 var $nombre;
 //email del emisor
 var $mail;
 //email del receptor
 var $mailr;
 var $asunto;
 //mensaje
 var $msn;
 //archivo adjunto
 var $adjunto;
 //enviar el mensaje
 private $sender;
 //url para redireccionar
 private $url;
 
 //función constructora
 public function __construct(){
 //cada uno de ellos es el parámetro que enviamos desde el formulario
 $this->nombre = $n;
 $this->mail = $m;
 $this->"#############" = $mr;
 $this->asunto = $a;
 $this->msn = $ms;
 $this->adjunto = $ad;
 }
 
 //método enviar con los parámetros del formulario
 public function enviar($n,$m,$mr,$a,$ms,$ad){
 //si existe post
 if(isset($_POST)){
 
 //si existe adjunto
 if($ad) {
 //añadimos texto al nombre original del archivo
 $dir_subida = 'fichero_';
 //nombre del fichero creado -> fichero_nombreArchivo.pdf
 $fichero_ok = $dir_subida . basename($ad);
 //y lo subimos a la misma carpeta
 move_uploaded_file($_FILES['adjunto']['tmp_name'], $fichero_ok);
 }
 //creamos el mensaje
 $contenido = '
 <h2>Nuevo mensaje de: '.$n.'</h2>
 <hr>
 Email: <b>'.$m.'</b><br>
 Mensaje: <br><b>'.$ms.'</b><br>
 ';
 //adjuntamos el archivo necesario para enviar los archivos adjuntos
 require_once 'AttachMailer.php';
 
 //enviamos el mensaje (emisor,receptor,asunto,mensaje)
 $this->sender = new AttachMailer($m, $mr, $a, $contenido);
 $this->sender->attachFile($fichero_ok);
 //eliminamos el fichero de la carpeta con unlink()
 //si queremos que se guarde en nuestra carpeta, lo comentamos o borramos
 unlink($fichero_ok);
 //enviamos el email con el archivo adjunto
 $this->sender->send();
 //url para redireccionar
 $this->url = '?????????????????';
 //redireccionamos a la misma url conforme se ha enviado correctamente con la variable si
 header('Location:'.$this->url.'?s=si');
 }
 else{
 //redireccionamos a la misma url conforme NO se ha enviado correctamente con la variable no
 header('Location:'.$this->url.'?s=no');
 }
 }
}
 
//llamamos a la clase
$obj = new Email();
//ejecutamos el método enviar con los parámetros que recibimos del formulario
$obj->enviar($_POST['nombre'], $_POST['email'], "################", $_POST['asunto'], $_POST['msn'], $_FILES['adjunto']['name']);
 
?>
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

envio con php y adjunto por email

Publicado por Kathyu (905 intervenciones) el 08/07/2020 11:55:50
Francisco, porque no sigue instrucciones? Le pedí que usara el tag de código, hasta ejemplo le puse

Y deje de crear un tema diferente para lo mismo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Repita con migo: Un tema por duda
Repita con migo: Un tema por duda
Repita con migo: Un tema por duda
Repita con migo: Un tema por duda
Repita con migo: Un tema por duda
Repita con migo: Un tema por duda
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 Javi
Val: 43
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

envio con php y adjunto por email

Publicado por Javi (19 intervenciones) el 08/07/2020 12:09:34
Intente adjuntar el código y no me deje por eso lo copié. Con respecto al tema, ok lo pondré en el mismo tema a ver si alguien puede ver dónde tengo el fallo. Pprquenlonprobe exactamente ogualmpero no envía datos no adjunto a mi email. lo siento por el problema. Mis disculpas
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

envio con php y adjunto por email

Publicado por Kathyu (905 intervenciones) el 08/07/2020 12:21:35
Métalo en la etiqueta de código, ahí arriba en el editor de las respuestas dice </>Código

Siguió algún ejemplo de los que le pasé? Algún error que le de?

Donde pone los ?????????????? es la url donde se redirigirá al cliente luego de enviar el email, por lo general es el home de nuestro sitio web.
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 Javier
Val: 43
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

envio con php y adjunto por email

Publicado por Javier (19 intervenciones) el 08/07/2020 12:27:53
Si, Manuel está bien entonces, el resto lo tengo según me pasó usted pero no termina de enviarme los datos a mi email.

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
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>envio de emails con archivos adjuntos</title>
<link rel="stylesheet" href="css/g1.css">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
 
</head>
<body>
<div id="container">
<h1>Envíenos su C.V. <a href="">nombre de mi web</a></h1>
 
<form action="send.php" method="post" enctype="multipart/form-data">
<fieldset>
<legend>rellena el formulario</legend>
<ul>
<li>
<label for="nombre">Nombre:</label>
<br>
<input type="text" id="nombre" name="nombre" placeholder="Nombre" required>
</li>
<li>
<label for="mail">E-mail:</label>
<br>
<input type="email" id="mail" name="email" placeholder="E-mail del emisor" required>
</li>
<br>
 
<li>
<label for="adjunto">Archivo adjunto</label>
<br>
<input type="file" id="adjunto" name="adjunto" required>
</li>
<li>
<label for="asunto">Asunto:</label>
<br>
<input type="text" id="asunto" name="asunto" placeholder="Asunto" required>
</li>
<li>
<label for="msn">Mensaje:</label>
<br>
<textarea name="msn" id="msn" rows="10" required></textarea>
</li>
<li>
<input type="submit" value="Enviar">
</li>
</ul>
</fieldset>
</form>
</div>
<script>
$(document).ready(function(){
$('form').submit(function(){
if($('input[type="text"]').val() == '' || $('input[type="email"]').val() == '' || $('input[type="file"]').val() == '' || $('textarea').val() == ''){
alert('Rellena todos los campos');
return false;
}
});
});
</script>
</body>
</html>

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
<?php
 
class Email {
 
//nombre
var $nombre;
//email del emisor
var $mail;
//email del receptor
var $mailr;
var $asunto;
//mensaje
var $msn;
//archivo adjunto
var $adjunto;
//enviar el mensaje
private $sender;
//url para redireccionar
private $url;
 
//función constructora
public function __construct(){
//cada uno de ellos es el parámetro que enviamos desde el formulario
$this->nombre = $n;
$this->mail = $m;
$this->"#############" = $mr;
$this->asunto = $a;
$this->msn = $ms;
$this->adjunto = $ad;
}
 
//método enviar con los parámetros del formulario
public function enviar($n,$m,$mr,$a,$ms,$ad){
//si existe post
if(isset($_POST)){
 
//si existe adjunto
if($ad) {
//añadimos texto al nombre original del archivo
$dir_subida = 'fichero_';
//nombre del fichero creado -> fichero_nombreArchivo.pdf
$fichero_ok = $dir_subida . basename($ad);
//y lo subimos a la misma carpeta
move_uploaded_file($_FILES['adjunto']['tmp_name'], $fichero_ok);
}
//creamos el mensaje
$contenido = '
<h2>Nuevo mensaje de: '.$n.'</h2>
<hr>
Email: <b>'.$m.'</b><br>
Mensaje: <br><b>'.$ms.'</b><br>
';
//adjuntamos el archivo necesario para enviar los archivos adjuntos
require_once 'AttachMailer.php';
 
//enviamos el mensaje (emisor,receptor,asunto,mensaje)
$this->sender = new AttachMailer($m, $mr, $a, $contenido);
$this->sender->attachFile($fichero_ok);
//eliminamos el fichero de la carpeta con unlink()
//si queremos que se guarde en nuestra carpeta, lo comentamos o borramos
unlink($fichero_ok);
//enviamos el email con el archivo adjunto
$this->sender->send();
//url para redireccionar
$this->url = '?????????????????';
//redireccionamos a la misma url conforme se ha enviado correctamente con la variable si
header('Location:'.$this->url.'?s=si');
}
else{
//redireccionamos a la misma url conforme NO se ha enviado correctamente con la variable no
header('Location:'.$this->url.'?s=no');
}
}
}
 
//llamamos a la clase
$obj = new Email();
//ejecutamos el método enviar con los parámetros que recibimos del formulario
$obj->enviar($_POST['nombre'], $_POST['email'], "################", $_POST['asunto'], $_POST['msn'], $_FILES['adjunto']['name']);
 
?>
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

envio con php y adjunto por email

Publicado por Kathyu (905 intervenciones) el 08/07/2020 12:33:08
Que hace este código?
1
2
//adjuntamos el archivo necesario para enviar los archivos adjuntos
require_once 'AttachMailer.php';

Digo el adjunto esta en temporal, eso lo pone el ejemplo?

Pase el link que ha usado de ejemplo voy a probarlo
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 Javier
Val: 43
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

envio con php y adjunto por email

Publicado por Javier (19 intervenciones) el 08/07/2020 12:43:06
— para que no se tenga que poner email receptor y siempre vaya a un mismo email he sustituido:
Index.php —



Borra la línea de la 24 hasta la 28 (es una lista), que es el campo del formulario que muestra esta opción.

— send.php —

En la línea 79 cambia el campo $_POST[‘emailr’] por el correo que quieras como receptor:

$obj->enviar($_POST['nombre'], $_POST['email'], "[email protected]", $_POST['asunto'], $_POST['msn'], $_FILES['adjunto']['name']);

Pruébalo y cualquier cosa me comentas ok?
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