Mandar mail

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

if(mail("pablomonteserin@pablomonteserin.com", "mail de mi página web", $msg, $headers)){
}
Ver video de la resolución.

Para mandar un correo es necesario que la página HTML del formulario de envío, la página PHP que lo procesa, el servidor PHP que procesa el mail y el servidor de correo que lo recibe utilicen la misma codificación.

Para comprobar que el mail se envía si no tenemos cuenta de correo, podemos usar mailinator

Subir un fichero al servidor

<form action="form.php" method="post"  enctype="multipart/form-data">
	<input type="file" name="foto">
</form>
form.phpif(isset($_FILES['foto'])){
	$errors= array();
	$file_name = $_FILES['foto']['name'];
	$file_size = $_FILES['foto']['size'];
	$file_tmp = $_FILES['foto']['tmp_name'];
	$file_type = $_FILES['foto']['type'];
	$file_ext=strtolower(end(explode('.',$_FILES['foto']['name'])));
   
	$url = dirname(__FILE__)."/uploads/".$file_name;
   
	$extensions= array("jpeg","jpg","png","pdf","zip", "rar");
   
	if(in_array($file_ext,$expensions)=== false){
		$errors[]="Estensión no permitida.";
	}
   
	if($file_size > 10485760) {
		$errors[]='File size must be excately 10 MB';
	}

	if (empty($errors)==true) {
		if(move_uploaded_file($file_tmp,$url)){
			echo "subida con exito";
			chmod($url, 0777);
		}else{
			echo "problema en la subida";
		}
	}
}

Mandar un mail con con ficheros adjuntos

Usaremos la librería PHPMailer.

Subiremos los ficheros al servidor y luego los adjuntaremos al mail.

form.php$mail = new PHPMailer(true);

try {
	//Server settings
	$mail->SMTPDebug = 2;                                       	// Enable verbose debug output
	$mail->isSMTP();                                            	// Set mailer to use SMTP
	$mail->Host       = 'smtp.server.com';  // Specify main and backup SMTP servers
	$mail->SMTPAuth   = true;                                   	// Enable SMTP authentication
	$mail->Username   = 'mail@examle.com';                     	// SMTP username
	$mail->Password   = "*********";                                // SMTP password
	$mail->SMTPSecure = 'ssl';                                  	// Enable TLS encryption, `ssl` also accepted
	$mail->Port       = 465;                                    	// TCP port to connect to
   
	//Recipients
	$mail->setFrom('contact@sonowat.com', 'Contacto Sonowat');
	$mail->addAddress('paramonty@gmail.com');     			// Add a recipient
	// $mail->addAddress('ellen@example.com');               	// Name is optional
	$mail->addReplyTo($email, 'Information');
	// $mail->addCC('cc@example.com');
	// $mail->addBCC('bcc@example.com');
	$mail->addAttachment($url);         				// Add attachments
   
	// Content
	$mail->isHTML(true);                                  		// Set email format to HTML
	$mail->Subject = 'Contacto desde www.sonowat.com';
	$mail->Body    = $msg;						// $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
	$mail->send();
	echo 'Message has been sent';
} catch (Exception $e) {
	echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

Añadir el Captcha de google al formulario

Necesitamos dos claves que obtendremos en esta página de google.

pagina.html<script src='https://www.google.com/recaptcha/api.js?render=CLAVE-SITIO-WEB'></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('CLAVE-SITIO-WEB', {action: 'comentario'})
.then(function(token) {
var recaptchaResponse = document.getElementById('recaptchaResponse');
recaptchaResponse.value = token;
});
});
</script>
form.php$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify'; 
$recaptcha_secret = 'CLAVE-SECRETA'; 
$recaptcha_response = $_POST['recaptcha_response']; 
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response); 
$recaptcha = json_decode($recaptcha); 
// Miramos si se considera humano o robot: 
if($recaptcha->score >= 0.6){
	echo 'Hay un 60% de probabilidad de que seas un humano';
	if(move_uploaded_file($file_tmp,$url)){
		echo "subida con exito";
		chmod($url, 0777);
		echo "Success";
	}else{
		echo "problema en la subida";
	}  
}else{
	echo 'Estás por debajo del 60% de probabilidad de que seas humano, mejor no me fío.';
}
icono de mandar un mail¡Contacta conmigo!
Pablo Monteserín
contacta conmigoPablo Monteserín

Para dudas técnicas sobre los ejercicios de mis cursos es necesario estar suscrito.