{"id":20516,"date":"2026-09-14T23:37:12","date_gmt":"2026-09-14T23:37:12","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/"},"modified":"2026-09-14T23:37:12","modified_gmt":"2026-09-14T23:37:12","slug":"criar-autenticacao-e-mail-laravel-mailgun-digital-ocean","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/","title":{"rendered":"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11 com Mailgun e Digital Ocean"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Quando foi lan\u00e7ada, a vers\u00e3o 5.7 do Laravel adicionou uma nova capacidade de verificar os e-mails do usu\u00e1rio. Se voc\u00ea j\u00e1 executou o php <code>artisan make:auth<\/code> dentro de um aplicativo Laravel, sabe a sensa\u00e7\u00e3o de prazer e empolga\u00e7\u00e3o ao ver todas as suas p\u00e1ginas de cadastro e login, completas com hash de senha e uma tabela users j\u00e1 criada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa empolga\u00e7\u00e3o logo vai passar ap\u00f3s a implanta\u00e7\u00e3o em produ\u00e7\u00e3o, apenas para descobrir que qualquer pessoa pode se cadastrar com <code>garbage@notrealemail.com<\/code> ou qualquer outra coisa que quiser digitar. Essa fina camada de autentica\u00e7\u00e3o de sess\u00e3o n\u00e3o ajuda muito em um aplicativo ativo. A introdu\u00e7\u00e3o da <code>MustVerifyEmailinterface<\/code> no Laravel 5.7 foi adicionada \u00e0 estrutura de autentica\u00e7\u00e3o para que, a fim de fazer login, os usu\u00e1rios precisem usar um endere\u00e7o de e-mail real e v\u00e1lido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o houve mudan\u00e7as significativas no recurso de autentica\u00e7\u00e3o de e-mail dentro do Laravel (agora na vers\u00e3o 11), mas recomendamos <a href=\"https:\/\/laravel.com\/docs\/11.x\/artisan\" target=\"_tabs\" rel=\"noopener noreferrer\">atualizar para a vers\u00e3o mais recente<\/a> se ainda n\u00e3o o fez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Laravel 11, lan\u00e7ado em 12 de mar\u00e7o de 2024, continua oferecendo recursos poderosos de verifica\u00e7\u00e3o de e-mail, enquanto introduz uma estrutura de aplicativo simplificada e outras melhorias. Este tutorial guiar\u00e1 voc\u00ea na configura\u00e7\u00e3o da autentica\u00e7\u00e3o de e-mail no Laravel 11 usando o Mailgun e na implanta\u00e7\u00e3o dela na Digital Ocean. <\/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-5336\"><p class=\"h5 m-0\" id=\"toc-title-5336\">\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=\"#criar-um-novo-aplicativo-laravel\">Criar um novo aplicativo Laravel<\/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=\"#verificacao-de-e-mail-no-laravel-11\">Verifica\u00e7\u00e3o de e-mail no Laravel 11<\/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=\"#introducao-ao-mailgun\">Introdu\u00e7\u00e3o ao Mailgun<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#verificar-se-funciona\">Verificar se funciona<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#recursos\">Recursos<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#quer-mais-postagens-como-esta-do-mailgun\">Quer mais postagens como esta do Mailgun?<\/a><\/div><\/div><\/nav>\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> <p>1. O requisito m\u00ednimo de PHP agora \u00e9 8.2.<\/p><p>2. H\u00e1 uma estrutura de aplicativo mais simplificada com um arquivo bootstrat\/app.php revitalizado.<\/p><p>3. Uso padr\u00e3o do SQLite para armazenamento de banco de dados, sess\u00f5es, cache e filas.<\/p><p class=\"mb-0\">4. Novo recurso de roteamento de integridade para monitoramento de aplicativos.<\/p><\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Criar um novo aplicativo Laravel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O primeiro passo \u00e9 criar um novo aplicativo com algumas configura\u00e7\u00f5es:<\/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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                                    $ laravel new email-verification-example rnrn$ cd email-verification-example rnrn$ touch database\/database.sqlite \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\">Isso vai criar o aplicativo Laravel 11.x padr\u00e3o com a estrutura de autentica\u00e7\u00e3o e um arquivo para um banco de dados SQLite. Atualize seu arquivo .env para apontar para o caminho completo do arquivo SQLite:<\/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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                                    DB_CONNECTION=sqlite rnDB_DATABASE=\/full\/path\/to\/email-verification-example\/database\/database.sqlite \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Verifica\u00e7\u00e3o de e-mail no Laravel 11<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos inspecionar a estrutura de autentica\u00e7\u00e3o padr\u00e3o e ver quais mudan\u00e7as precisam ser feitas para adicionar a verifica\u00e7\u00e3o de e-mail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode ver a documenta\u00e7\u00e3o de valida\u00e7\u00e3o de e-mail do Laravel <a href=\"https:\/\/laravel.com\/docs\/11.x\" target=\"_tabs\" rel=\"noopener noreferrer\">aqui<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No Laravel 11, o processo de adicionar a verifica\u00e7\u00e3o de e-mail permanece semelhante, mas a estrutura de arquivos mudou. Abra seu arquivo bootstrap\/app.php e certifique-se de que ele inclua o seguinte:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"0\">\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        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Em seguida, implemente a interface <code>MustVerifyEmail<\/code>. Uma interface em PHP especifica os m\u00e9todos que uma classe deve implementar. Voc\u00ea precisar\u00e1 verificar se o seu <code>AppModeIsUser<\/code> implementa o contrato <code>IlluminateContractsAuthMustVerifyEmail<\/code>:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"0\">\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        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Essa interface imp\u00f5e que tenhamos tr\u00eas novos m\u00e9todos em nosso modelo User:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>hasVerifiedEmail() <\/code><\/li>\n\n\n\n<li><code>markEmailAsVerified() <\/code><\/li>\n\n\n\n<li><code>sendEmailVerificationNotification() <\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A implementa\u00e7\u00e3o desses m\u00e9todos pode ser encontrada em: <code>vendor\/laravel\/framework\/src\/Illuminate\/Auth\/MustVerifyEmail.php<\/code>. Para marcar um usu\u00e1rio como verificado, precisamos ter uma coluna <code>email_verified_at<\/code> em nossa tabela users, que j\u00e1 \u00e9 fornecida em nossa migra\u00e7\u00e3o padr\u00e3o de cria\u00e7\u00e3o da tabela users:<\/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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                                    Schema::create(&#039;users&#039;, function (Blueprint $table) { rn \u202f\u202f$table-&gt;increments(&#039;id&#039;); rn \u202f\u202f$table-&gt;string(&#039;name&#039;); rn \u202f\u202f$table-&gt;string(&#039;email&#039;)-&gt;unique(); rn \u202f\u202f$table-&gt;timestamp(&#039;email_verified_at&#039;)-&gt;nullable(); rn \u202f\u202f$table-&gt;string(&#039;password&#039;); rn \u202f\u202f$table-&gt;rememberToken(); rn \u202f\u202f$table-&gt;timestamps(); rn});\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\">Execute as migra\u00e7\u00f5es para criar a tabela: <code>php artisan migrate<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No arquivo <code>routes\/web.php<\/code>, atualize as rotas de autentica\u00e7\u00e3o para incluir a verifica\u00e7\u00e3o de e-mail: <\/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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                                    Auth::routes([&#039;verify&#039; =&gt; true]);\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\">No Laravel 11, as rotas s\u00e3o definidas no arquivo <code>bootstrap\/app.php<\/code>. Certifique-se de que suas rotas da web estejam inclu\u00eddas e adicione as rotas de verifica\u00e7\u00e3o:\u00a0<\/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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                                    -&gt;withRouting( rnrn    web: __DIR__.&#039;\/..\/routes\/web.php&#039;, rnrn    commands: __DIR__.&#039;\/..\/routes\/console.php&#039;, rnrn    health: &#039;\/up&#039;, rnrn) \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\">Ent\u00e3o, em seu arquivo <code>routes\/web.php<\/code>, adicione:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"0\">\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        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Para ver todas as rotas dispon\u00edveis no seu aplicativo, voc\u00ea pode executar <code>php artisan route:list<\/code>.\u202fIsso \u00e9 praticamente tudo o que precisamos fazer no lado do Laravel para verificar e-mails. No entanto, se voc\u00ea tentar agora, n\u00e3o vai funcionar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4150\" width=\"1024\" height=\"505\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-blogpost.png\" alt=\"Laravel code\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-blogpost.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-blogpost-300x148.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-blogpost-768x379.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de podermos enviar e-mails de nosso servidor PHP, precisamos configurar um driver de e-mail dentro do Laravel. Mas voc\u00ea pode conferir usando <a href=\"https:\/\/laravel.com\/docs\/11.x\/artisan\" target=\"_tabs\" rel=\"noopener noreferrer\">tinker<\/a> para ver que um usu\u00e1rio foi criado com um email_verified_at nulo.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"0\">\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        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                    <\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Introdu\u00e7\u00e3o ao Mailgun<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O Mailgun oferece a capacidade de enviar e-mails via servidor SMTP ou por meio de sua API. Neste tutorial, enviaremos e-mails por meio da API do Mailgun. \u00c9 mais r\u00e1pido, dimensiona melhor e d\u00e1 menos trabalho para configurar do que o SMTP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4151\" width=\"1500\" height=\"377\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/SMTP_Flowchart_copy.png\" alt=\"Mailgun API call\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/SMTP_Flowchart_copy.png 1500w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/SMTP_Flowchart_copy-300x75.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/SMTP_Flowchart_copy-768x193.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/SMTP_Flowchart_copy-1024x257.png 1024w\" sizes=\"(max-width: 1500px) 100vw, 1500px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos enviar chamadas de API. Para isso, precisamos do <a href=\"https:\/\/github.com\/guzzle\/guzzle\" target=\"_tabs\" rel=\"noopener noreferrer\">Guzzle<\/a>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>$ composer require guzzlehttp\/guzzle<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para que o nosso aplicativo envie e-mails: precisamos de um nome de dom\u00ednio hospedado. Tenho um nome de dom\u00ednio que comprei pelo <a href=\"https:\/\/domains.google.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Google Domains<\/a> por cerca de US$\u00a012\/ano. O site (<a href=\"https:\/\/employbl.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\">https:\/\/employbl.com\/<\/a>) est\u00e1 hospedado no <a href=\"https:\/\/forge.laravel.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Laravel Forge<\/a> por uma taxa mensal. Para implant\u00e1-lo, eu segui o <a href=\"https:\/\/laracasts.com\/series\/learn-laravel-forge\" target=\"_tabs\" rel=\"noopener noreferrer\">curso do Laracasts, Learn Laravel Forge<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse curso, configurei meu aplicativo Laravel para ser executado a partir de droplets da Digital Ocean. Nesse processo, configurei meu nome de dom\u00ednio do Google para apontar para a Digital Ocean.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de criar uma conta no Mailgun, voc\u00ea precisar\u00e1 verificar seu dom\u00ednio, o que leva cerca de 24 horas. Para fazer isso, precisamos adicionar os registros TXT, CNAME e MX. \u202fSe os registros MX j\u00e1 estiverem apontados para um provedor de caixa de correio, voc\u00ea poder\u00e1 configurar um subdom\u00ednio. Para encontrar esses registros, acesse o dom\u00ednio em sua conta do Mailgun e verifique <a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/quickstart-sending.html#how-to-start-sending-email\" target=\"_tabs\" rel=\"noopener noreferrer\">Verifica\u00e7\u00e3o de dom\u00ednio &amp; DNS<\/a>. <b>Assim que voc\u00ea tiver um dom\u00ednio do Mailgun funcionando, v\u00e1 at\u00e9 o painel para encontrar a sua chave de API e atualize o arquivo .env conforme necess\u00e1rio.<\/b><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>MAIL_DRIVER=mailgun MAILGUN_DOMAIN=mg.SEU_DOMINIO.com MAILGUN_SECRET=SUA_CHAVE_AQUI<\/code><\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Saiba mais: o Laravel mudou para um versionamento anual. Agora na V10, voc\u00ea pode esperar corre\u00e7\u00f5es em <b>6 de agosto de 2024<\/b> e corre\u00e7\u00f5es de seguran\u00e7a at\u00e9 <b>14 de fevereiro de 2025<\/b>. <a href='https:\/\/laravel-news.com\/laravel-10'>Ver notas de lan\u00e7amento do Laravel 10.<\/a><\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Verificar se funciona<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Com o envio de e-mail configurado, depois que um usu\u00e1rio se cadastra, ele ver\u00e1 uma landing page pedindo para verificar o seu e-mail. Essa p\u00e1gina pode ser modificada em <b>resources\/views\/auth\/verify.blade.php<\/b>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4152\" width=\"1024\" height=\"247\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel2.png\" alt=\"Verify your email Laravel\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel2.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel2-300x72.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel2-768x185.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Isso vai enviar um e-mail real para o endere\u00e7o que voc\u00ea forneceu. O modelo para esse e-mail existe em <b>IlluminateAuthNotificationsVerifyEmail.php<\/b>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4153\" width=\"512\" height=\"254\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/example-laravel.png\" alt=\"Laravel verify email address link\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/example-laravel.png 512w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/example-laravel-300x149.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se n\u00e3o quisermos que nossos e-mails de verifica\u00e7\u00e3o digam &#8220;Regards&#8221; ou o texto acima, ent\u00e3o precisamos personaliz\u00e1-los. Voc\u00ea pode publicar os modelos padr\u00e3o usando os comandos de publica\u00e7\u00e3o abaixo: <\/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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                                    $ php artisan vendor:publish --tag=laravel-notificationsrn$ php artisan vendor:publish --tag=laravel-mail\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\">Em seguida, escreva os novos padr\u00f5es em <b>resources\/views\/vendor\/notifications\/email.blade.php<\/b>. Se tiver mais coisas para alterar, voc\u00ea pode reimplementar a notifica\u00e7\u00e3o adicionando um novo m\u00e9todo <code>sendEmailVerificationNotification<\/code> ao seu modelo User que retorna uma notifica\u00e7\u00e3o personalizada feita por voc\u00ea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que o usu\u00e1rio clicar no link de verifica\u00e7\u00e3o de endere\u00e7o de e-mail, ele ser\u00e1 redirecionado para o seu painel, podendo fazer login sem problemas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4154\" width=\"1024\" height=\"325\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-success.png\" alt=\"Laravel login\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-success.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-success-300x95.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/laravel-success-768x244.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Isso deve ser o suficiente para voc\u00ea come\u00e7ar! A parte mais dif\u00edcil para mim foi configurar o servidor de e-mail e o Mailgun. Depois que o seu dom\u00ednio \u00e9 verificado e o Mailgun est\u00e1 todo configurado, a parte do Laravel acaba sendo simples. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea conseguiu fazer tudo funcionar? Algu\u00e9m j\u00e1 est\u00e1 usando essa funcionalidade em produ\u00e7\u00e3o? Entre em contato comigo <a href=\"https:\/\/twitter.com\/Connor11528\" target=\"_tabs\" rel=\"noopener noreferrer\">no Twitter<\/a> ou deixe coment\u00e1rios abaixo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recursos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Achei esses tutoriais, al\u00e9m dos links acima, muito \u00fateis.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/medium.com\/@sgobinda007\/send-email-from-your-node-js-application-by-using-mailgun-api-services-bbedc7c45c19\" target=\"_tabs\" rel=\"noopener noreferrer\">Enviar e-mail de seu aplicativo Node.js usando os servi\u00e7os da API do Mailgun<\/a> Gobinda Thakur<\/li>\n\n\n\n<li><a href=\"https:\/\/medium.com\/@DCzajkowski\/testing-laravel-authentication-flow-573ea0a96318\" target=\"_tabs\" rel=\"noopener noreferrer\">Testando o fluxo de autentica\u00e7\u00e3o do Laravel<\/a> Dariusz Czajkowski<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Quer mais postagens como esta do Mailgun?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Connor Leech, nosso autor convidado, \u00e9 engenheiro de software na Stitch Labs.\u202fVoc\u00ea pode contat\u00e1-lo <a href=\"mailto:connor@stitchlabs.com\" target=\"_tabs\" rel=\"noopener noreferrer\">atrav\u00e9s do e-mail dele<\/a>. Para conferir mais postagens e guias de resolu\u00e7\u00e3o de problemas, assine a nossa newsletter para n\u00e3o perder nenhum insight de especialistas que convidamos e da nossa equipe fan\u00e1tica por e-mail.<\/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_d7254aa1cdbac030bc1caca6b30bdbe0\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                Cadastre-se            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_d7254aa1cdbac030bc1caca6b30bdbe0\">\r\n                \u00c9 f\u00e1cil come\u00e7ar. E \u00e9 gr\u00e1tis.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">Veja o que voc\u00ea pode alcan\u00e7ar com a melhor plataforma de entrega de e-mail do 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>Integre o Laravel vers\u00e3o 11.x ao Mailgun para adicionar a capacidade de verificar os e-mails do usu\u00e1rio. Continue lendo para conferir nosso guia passo a passo.<\/p>\n","protected":false},"author":13,"featured_media":4074,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[20],"class_list":["post-20516","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>Criar autentica\u00e7\u00e3o de e-mail do Laravel 11.x com Mailgun e Digital Ocean - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"O Laravel vers\u00e3o 11 oferece suporte \u00e0 verifica\u00e7\u00e3o para os e-mails do usu\u00e1rio. Saiba como essa integra\u00e7\u00e3o funciona com o guia passo a passo do Mailgun e da Digital Ocean.\" \/>\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\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11.x com Mailgun e Digital Ocean - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"O Laravel vers\u00e3o 11 oferece suporte \u00e0 verifica\u00e7\u00e3o para os e-mails do usu\u00e1rio. Saiba como essa integra\u00e7\u00e3o funciona com o guia passo a passo do Mailgun e da Digital Ocean.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/\" \/>\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=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/\",\"name\":\"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11.x com Mailgun e Digital Ocean - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"datePublished\":\"2026-09-14T23:37:12+00:00\",\"description\":\"O Laravel vers\u00e3o 11 oferece suporte \u00e0 verifica\u00e7\u00e3o para os e-mails do usu\u00e1rio. Saiba como essa integra\u00e7\u00e3o funciona com o guia passo a passo do Mailgun e da Digital Ocean.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/#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\\\/pt\\\/blog\\\/email\\\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/inicio\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11 com Mailgun e Digital Ocean\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Poderosas APIs de e-mail transacional que permitem a voc\u00ea enviar, receber e rastrear e-mails, criadas com os desenvolvedores em mente. Saiba mais hoje mesmo!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#\\\/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\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11.x com Mailgun e Digital Ocean - Transactional Email API Service For Developers | Mailgun","description":"O Laravel vers\u00e3o 11 oferece suporte \u00e0 verifica\u00e7\u00e3o para os e-mails do usu\u00e1rio. Saiba como essa integra\u00e7\u00e3o funciona com o guia passo a passo do Mailgun e da Digital Ocean.","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\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/","og_locale":"pt_BR","og_type":"article","og_title":"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11.x com Mailgun e Digital Ocean - Transactional Email API Service For Developers | Mailgun","og_description":"O Laravel vers\u00e3o 11 oferece suporte \u00e0 verifica\u00e7\u00e3o para os e-mails do usu\u00e1rio. Saiba como essa integra\u00e7\u00e3o funciona com o guia passo a passo do Mailgun e da Digital Ocean.","og_url":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/","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":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/","url":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/","name":"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11.x com Mailgun e Digital Ocean - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","datePublished":"2026-09-14T23:37:12+00:00","description":"O Laravel vers\u00e3o 11 oferece suporte \u00e0 verifica\u00e7\u00e3o para os e-mails do usu\u00e1rio. Saiba como essa integra\u00e7\u00e3o funciona com o guia passo a passo do Mailgun e da Digital Ocean.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/#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\/pt\/blog\/email\/criar-autenticacao-e-mail-laravel-mailgun-digital-ocean\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/pt\/inicio\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/pt\/blog\/"},{"@type":"ListItem","position":3,"name":"Criar autentica\u00e7\u00e3o de e-mail do Laravel 11 com Mailgun e Digital Ocean"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/pt\/#website","url":"https:\/\/www.mailgun.com\/pt\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Poderosas APIs de e-mail transacional que permitem a voc\u00ea enviar, receber e rastrear e-mails, criadas com os desenvolvedores em mente. Saiba mais hoje mesmo!","publisher":{"@id":"https:\/\/www.mailgun.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/pt\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/#\/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\/pt\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/20516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/users\/13"}],"version-history":[{"count":0,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/20516\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media\/4074"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media?parent=20516"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog_category?post=20516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}