{"id":21028,"date":"2026-09-15T07:49:54","date_gmt":"2026-09-15T07:49:54","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/opt-in-doble-con-php-mailgun\/"},"modified":"2026-09-15T07:49:54","modified_gmt":"2026-09-15T07:49:54","slug":"opt-in-doble-con-php-mailgun","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/","title":{"rendered":"Opt in doble mediante PHP con Mailgun"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Crear un formulario de registro personalizado con Mailgun puede ser muy sencillo. Recibo muchos mensajes de personas que me piden que escriba un tutorial sobre c\u00f3mo hacer esto en PHP, as\u00ed que aqu\u00ed lo tienes. Antes de hablar de c\u00f3digo, hablemos brevemente de las mejores pr\u00e1cticas. Si ya lo sabes todo sobre el opt in doble, s\u00e1ltate el siguiente p\u00e1rrafo y pasa a la parte t\u00e9cnica usando el \u00edndice a continuaci\u00f3n.<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-4051\"><p class=\"h5 m-0\" id=\"toc-title-4051\">\u00cdndice<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#que-es-el-opt-in-doble-y-por-que-deberia-importarme-si-me-dedico-a-la-programacion\">\u00bfQu\u00e9 es el opt in doble y por qu\u00e9 deber\u00eda importarme si me dedico a la programaci\u00f3n?<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#formulario-html-y-javascript\">Formulario HTML y Javascript<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#funciones-de-php\">Funciones de PHP<\/a><a class=\"scrollme link-body-color\" href=\"#logica-de-php\">L\u00f3gica de PHP<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es el opt in doble y por qu\u00e9 deber\u00eda importarme si me dedico a la programaci\u00f3n?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un proceso de opt in doble es una forma de verificar que, cuando una persona deja sus datos en el formulario de registro de la newsletter de tu sitio web, realmente se ha suscrito. Esto se logra pidi\u00e9ndote que reconozcas y confirmes que tu direcci\u00f3n de email se ha a\u00f1adido a una lista de correo espec\u00edfica. \u00bfC\u00f3mo lo hace? Simplemente envi\u00e1ndote un email y pidi\u00e9ndote que confirmes que realmente quieres recibir emails de ese remitente. Si no confirmas tu suscripci\u00f3n (normalmente haciendo clic en un enlace de confirmaci\u00f3n dentro de un email de confirmaci\u00f3n), nunca deber\u00edas recibir un email de marketing (o similar) de ese remitente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A los profesionales del marketing suele no gustarles esta pr\u00e1ctica, ya que a\u00f1ade un paso m\u00e1s para llegar a su audiencia, pero es importante entender que, sin este proceso, cualquiera podr\u00eda ser blanco de spam de emails no solicitados<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin el opt in doble, cualquier persona que conozca tu direcci\u00f3n de email podr\u00eda suscribirte a miles de newsletters y listas de marketing en tu nombre sin tu consentimiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la mayor\u00eda de los pa\u00edses, esto es\u00a0<b>obligatorio por ley<\/b>\u00a0pero, de cualquier forma, creo que es una de las mejores pr\u00e1cticas y protege a tu negocio frente a problemas de entregabilidad y quejas por abuso de email.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Formulario HTML y Javascript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lo primero que querr\u00e1s hacer es crear un formulario para ubicarlo en alg\u00fan lugar de tu sitio web. Este formulario pedir\u00e1 a las personas sus datos, que podr\u00e1s guardar en una base de datos o, si es compatible, dentro de la propia plataforma de email. Mailgun es compatible con esto \u00faltimo (<a href=\"http:\/\/documentation.mailgun.com\/api-mailinglists.html\" target=\"_tabs\" rel=\"noopener noreferrer\">y a\u00fan m\u00e1s al usar par\u00e1metros de variables personalizadas<\/a>), por lo que no tienes que preocuparte por configurar una base de datos para almacenar esta informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El formulario enviar\u00e1 los datos a un archivo llamado\u00a0<code>contact.php<\/code>\u00a0y tendr\u00e1 dos campos obligatorios. Obviamente, puedes hacer que el campo del nombre no sea obligatorio o a\u00f1adir m\u00e1s campos pero, para el prop\u00f3sito de este art\u00edculo, lo mantendremos sencillo.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    \r\n    \r\n    \r\n    &lt;p&gt;\r\n        &lt;a href=&quot;#&quot;&gt;I&#039;ve read and agree to the Terms of Service &lt;\/a&gt;\r\n        \r\n    &lt;\/p&gt;\r\n    &lt;button type=&quot;submit&quot;&gt;Newsletter Signup&lt;\/button&gt;\r\n    &lt;p&gt;\r\n        &lt;span style=&quot;display: none&quot; id=&quot;pls&quot;&gt; Please review and tick the Terms of Service box&lt;\/span&gt;\r\n    &lt;\/p&gt;\r\n\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Al usar el siguiente c\u00f3digo Javascript nos aseguraremos de que la casilla se haya marcado antes de la validaci\u00f3n (al enviar el formulario); de lo contrario, no se procesar\u00e1 el email.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                      \r\n    var box = document.getElementById(&quot;chx&quot;);\r\n    var alrt = document.getElementById(&quot;pls&quot;);\r\n\r\nfunction check_the_box(){  \r\n    if(!box.checked) {\r\n        alrt.setAttribute(&quot;style&quot;,&quot;display: inline&quot;);\r\n            return false\r\n}\r\nelse {  \r\n    return true\r\n}\r\n}\r\n \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">A\u00f1ade algo de estilo al formulario si quieres. Por ahora es muy b\u00e1sico, pero funcional.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Funciones de PHP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed empieza la parte interesante: un archivo que contiene todas las funciones necesarias para que el formulario funcione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes una breve lista de todas las funciones creadas y una explicaci\u00f3n de lo que hacen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>SanitizeInputs()<\/b>: esta funci\u00f3n se usa para limpiar los datos introducidos de cualquier car\u00e1cter \u201cda\u00f1ino\u201d<\/li>\n\n\n\n<li><b>SanitizeEmail()<\/b>: igual que la anterior pero, en su lugar, realiza una comprobaci\u00f3n de expresiones regulares en la direcci\u00f3n de email, ya que no queremos enviar emails a direcciones mal escritas, \u00bfverdad?<\/li>\n\n\n\n<li><b>SendConfirmationEmail()<\/b>: env\u00eda un email a una direcci\u00f3n de email espec\u00edfica, en nuestro caso es la direcci\u00f3n de email introducida en el formulario<\/li>\n\n\n\n<li><b>MakeConfirmationHash()<\/b>: crea un hash \u00fanico basado en la concatenaci\u00f3n de una cadena de la direcci\u00f3n de email introducida y una cadena secreta. Esta cadena se enviar\u00e1 como parte de la URL en la que se debe hacer clic para verificar que se desea recibir emails de nuestro sitio web. Una fant\u00e1stica forma de asegurar el opt in doble.<\/li>\n\n\n\n<li><b>CheckConfirmationHash()<\/b>: una funci\u00f3n que comprueba que, al hacer clic en el enlace de confirmaci\u00f3n, el hash contenido en la URL es v\u00e1lido. Esto es muy importante para el procedimiento del opt in doble, de lo contrario, cualquiera podr\u00eda verificar la direcci\u00f3n de email de otra persona.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes cambiar el texto del email como quieras. Ten en cuenta que volver\u00e1s a pasar el hash secreto, la direcci\u00f3n de email y el nombre de la persona al script como par\u00e1metros GET.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Alerta de dependencia: he utilizado la biblioteca oficial de Mailgun para PHP disponible en GitHub<\/b><\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    sendMessage($domain, array(\r\n  &#039;from&#039;    =&gt; &#039;confirmation@&#039;.$domain,\r\n  &#039;to&#039;      =&gt; $recipientAddress,\r\n  &#039;subject&#039; =&gt; $subjectText,\r\n  &#039;html&#039;    =&gt; &#039;&lt;p&gt;Hello, please confirm you want to receive marketing emails from &#039;.$domain.&#039; by clicking on the below link &lt;p&gt;&lt;a href=&quot;$siteURL\/contact.php?c=&amp;apos;.$hashedUnique.&amp;apos;&amp;e=&amp;apos;.$recipientAddress.&amp;apos;&amp;n=&amp;apos;.$recipientName.&amp;apos;&quot;&gt;CONFIRMATION&lt;\/a&gt;&lt;\/p&gt;&lt;\/p&gt;&lt;p&gt; This email was sent to&#039;.$recipientName.&#039;, at the speed of a bullet, by Mailgun!&lt;\/a&gt;&#039;\r\n  ));\r\n}\r\n\r\n function MakeConfirmationHash($confEmail, $confCode) {\r\n    return md5($confEmail.$confCode);\r\n }\r\n\r\n function CheckConfirmationHash($confEmail, $confCode) {\r\n    global $uniqueKey;\r\n    if (md5($confEmail.$uniqueKey) === $confCode) { return TRUE; }\r\n        else { return FALSE; }\r\n }\r\n\r\nfunction AddMemberToList($recipientAddress,$recipientName) {\r\n    global $mailingList,$mgClient;\r\n    $result = $mgClient-&gt;post(&quot;lists\/$mailingList\/members&quot;, array(\r\n    &#039;address&#039;     =&gt; $recipientAddress,\r\n    &#039;name&#039;        =&gt; $recipientName,\r\n    &#039;description&#039; =&gt; &#039;Form Opt In&#039;,\r\n    &#039;subscribed&#039;  =&gt; true    \r\n));\r\n}\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<h3 class=\"wp-block-heading\">L\u00f3gica de PHP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para la secci\u00f3n de la l\u00f3gica, explicar\u00e9 el razonamiento detr\u00e1s del c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando alguien introduce su direcci\u00f3n de email y su nombre en la casilla y env\u00eda el formulario, ocurre lo siguiente:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>El script genera un c\u00f3digo \u00fanico y lo env\u00eda por email a esa persona<\/li>\n\n\n\n<li>La persona recibe un email con un enlace de confirmaci\u00f3n que contiene su informaci\u00f3n y un c\u00f3digo \u00fanico: al hacer clic en el email, confirma que est\u00e1 de acuerdo con que su direcci\u00f3n forme parte de nuestra lista de correo.<\/li>\n\n\n\n<li>Hacer clic en la URL devuelve los datos de la persona, que se cotejan con el c\u00f3digo \u00fanico y activan su incorporaci\u00f3n a la lista de correo en Mailgun.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Y eso es todo, opt in doble respetado, \u00a1un buen trabajo!<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Dime si te ha gustado este art\u00edculo compartiendo tus ideas en la secci\u00f3n de comentarios a continuaci\u00f3n o en Twitter; y si te gustar\u00eda ver este tutorial en un lenguaje de programaci\u00f3n diferente, h\u00e1zmelo saber.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Feliz env\u00edo!<\/p>\n\n\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_f4ebc7c97843509c39d277dc2495b1fe\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                Reg\u00edstrate            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_f4ebc7c97843509c39d277dc2495b1fe\">\r\n                Empezar es facil\u00edsimo. Y gratis.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">Descubre todo lo que puedes lograr con la mejor plataforma de entrega de emails del mundo.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/signup.mailgun.com\/new\/signup\"  class=\"btn btn-secondary\" >Get started<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Crear un formulario de registro personalizado con Mailgun puede ser muy sencillo. Recibo muchos mensajes de personas que me piden que escriba un tutorial sobre c\u00f3mo hacer esto en PHP, as\u00ed que aqu\u00ed lo tienes.<\/p>\n","protected":false},"author":34,"featured_media":4074,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[20],"class_list":["post-21028","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-email"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Usa Mailgun para el opt in doble v\u00eda PHP - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Crear registros por email puede parecer f\u00e1cil hasta que te adentras en el RGPD y las mejores pr\u00e1cticas de reputaci\u00f3n. Descubre c\u00f3mo usar Mailgun y PHP para simplificar el proceso.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Usa Mailgun para el opt in doble v\u00eda PHP - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Crear registros por email puede parecer f\u00e1cil hasta que te adentras en el RGPD y las mejores pr\u00e1cticas de reputaci\u00f3n. Descubre c\u00f3mo usar Mailgun y PHP para simplificar el proceso.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/\",\"name\":\"Usa Mailgun para el opt in doble v\u00eda PHP - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"datePublished\":\"2026-09-15T07:49:54+00:00\",\"description\":\"Crear registros por email puede parecer f\u00e1cil hasta que te adentras en el RGPD y las mejores pr\u00e1cticas de reputaci\u00f3n. Descubre c\u00f3mo usar Mailgun y PHP para simplificar el proceso.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/email\\\/opt-in-doble-con-php-mailgun\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Opt in doble mediante PHP con Mailgun\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Usa Mailgun para el opt in doble v\u00eda PHP - Transactional Email API Service For Developers | Mailgun","description":"Crear registros por email puede parecer f\u00e1cil hasta que te adentras en el RGPD y las mejores pr\u00e1cticas de reputaci\u00f3n. Descubre c\u00f3mo usar Mailgun y PHP para simplificar el proceso.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/","og_locale":"es_ES","og_type":"article","og_title":"Usa Mailgun para el opt in doble v\u00eda PHP - Transactional Email API Service For Developers | Mailgun","og_description":"Crear registros por email puede parecer f\u00e1cil hasta que te adentras en el RGPD y las mejores pr\u00e1cticas de reputaci\u00f3n. Descubre c\u00f3mo usar Mailgun y PHP para simplificar el proceso.","og_url":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/","url":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/","name":"Usa Mailgun para el opt in doble v\u00eda PHP - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","datePublished":"2026-09-15T07:49:54+00:00","description":"Crear registros por email puede parecer f\u00e1cil hasta que te adentras en el RGPD y las mejores pr\u00e1cticas de reputaci\u00f3n. Descubre c\u00f3mo usar Mailgun y PHP para simplificar el proceso.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/es\/blog\/email\/opt-in-doble-con-php-mailgun\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/es\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/es\/blog\/"},{"@type":"ListItem","position":3,"name":"Opt in doble mediante PHP con Mailgun"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/es\/#website","url":"https:\/\/www.mailgun.com\/es\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!","publisher":{"@id":"https:\/\/www.mailgun.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/es\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/es\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/21028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/users\/34"}],"version-history":[{"count":0,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/21028\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media\/4074"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media?parent=21028"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog_category?post=21028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}