O maior portal de MU Online do Brasil — desde 2003
Tutorial Intermediário Servidor

Como configurar e-mail SMTP no servidor de MU Online

Configure envio de e-mails no site do servidor de MU Online — SMTP do Gmail, Mailtrap para testes, PHPMailer, recuperação de senha, confirmação de cadastro e alertas automáticos.

RO Rodrigo · Atualizado em 3 ago 2015 · ⏱ 16 min de leitura
Resposta rápida

O sistema de email do servidor de MU Online é responsável por recuperação de senha, confirmação de cadastro, notificações de VIP e alertas para administradores. A configuração é feita no sistema de site (PHP) usando um servidor SMTP.

O sistema de email do servidor de MU Online é responsável por recuperação de senha, confirmação de cadastro, notificações de VIP e alertas para administradores. A configuração é feita no sistema de site (PHP) usando um servidor SMTP.

Opções de SMTP

ServiçoEmails/dia (grátis)ParaComplexidade
Gmail SMTP500/diaPequenos servidoresBaixa
SendGrid100/diaCrescimentoBaixa
Brevo (ex-Sendinblue)300/diaCrescimentoBaixa
MailtrapApenas testesDesenvolvimentoBaixa
SMTP próprio (Postfix)IlimitadoProduçãoAlta

Configurar Gmail SMTP

O Gmail permite usar sua conta como servidor SMTP. Requer criação de App Password:

Passo 1 — Criar App Password no Google

  1. Acesse sua conta Google → ContaSegurança;
  2. Em Como você faz login no GoogleVerificação em duas etapas (ativar se não estiver);
  3. Após ativar, volte em Segurança → Senhas de apps;
  4. Selecione App: Outro (nome personalizado) → escreva "Site MU Servidor";
  5. Clique em Gerar;
  6. Anote a senha gerada (16 caracteres) — será usada no lugar da sua senha normal.

Passo 2 — Configurar PHPMailer com Gmail

<?php
// email.php — classe de email para o site do servidor

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// Instalar PHPMailer: composer require phpmailer/phpmailer
// Ou baixar manualmente do GitHub

function enviarEmail(string $para, string $assunto, string $corpo): bool {
    $mail = new PHPMailer(true);
    
    try {
        // Configuração SMTP Gmail
        $mail->isSMTP();
        $mail->Host       = 'smtp.gmail.com';
        $mail->SMTPAuth   = true;
        $mail->Username   = '[email protected]';   // sua conta Gmail
        $mail->Password   = 'abcd efgh ijkl mnop';   // App Password (com espaços)
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->Port       = 587;
        
        // Remetente
        $mail->setFrom('[email protected]', 'Nome do Servidor MU');
        $mail->addReplyTo('[email protected]', 'Suporte');
        
        // Destinatário
        $mail->addAddress($para);
        
        // Conteúdo
        $mail->isHTML(true);
        $mail->CharSet = 'UTF-8';
        $mail->Subject = $assunto;
        $mail->Body    = $corpo;
        $mail->AltBody = strip_tags($corpo); // versão texto puro
        
        $mail->send();
        return true;
        
    } catch (Exception $e) {
        error_log("Erro ao enviar email: {$mail->ErrorInfo}");
        return false;
    }
}

Usar sem Composer (PHPMailer manual)

Se não usar Composer, baixe o PHPMailer do GitHub e inclua manualmente:

<?php
// Incluir PHPMailer manualmente
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
require 'PHPMailer/Exception.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Resto do código igual ao acima

Configurar SendGrid (mais confiável)

SendGrid oferece 100 emails/dia grátis e é mais confiável para produção:

  1. Crie conta em sendgrid.com;
  2. Em Settings → API Keys → Create API Key;
  3. Dê nome e selecione Full Access;
  4. Copie a API Key gerada (começa com SG.);
<?php
// Configuração SendGrid com PHPMailer

$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host       = 'smtp.sendgrid.net';
$mail->SMTPAuth   = true;
$mail->Username   = 'apikey';                     // literal: "apikey"
$mail->Password   = 'SG.sua_api_key_aqui...';    // sua API Key
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

// Alternativamente, porta 465 com SSL:
// $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
// $mail->Port       = 465;

Templates de email para servidor de MU

Email de boas-vindas ao criar conta

<?php
function emailBoasVindas(string $email, string $conta): void {
    $assunto = 'Bem-vindo ao Servidor MU - Conta criada!';
    
    $corpo = '
    <html>
    <body style="font-family: Arial; background: #1a1a2e; color: #eee; padding: 20px;">
        <div style="max-width: 600px; margin: 0 auto; background: #16213e; padding: 30px; border-radius: 10px;">
            <h1 style="color: #e94560;">⚔️ Bem-vindo ao Servidor MU!</h1>
            <p>Sua conta foi criada com sucesso.</p>
            <p><strong>Login:</strong> ' . htmlspecialchars($conta) . '</p>
            <p>Agora você pode baixar o cliente e começar a jogar!</p>
            <a href="https://www.meuservidor.com.br/download" 
               style="display:inline-block; background:#e94560; color:#fff; 
                      padding:10px 20px; border-radius:5px; text-decoration:none;">
               Baixar Cliente
            </a>
            <hr style="border-color: #333; margin: 20px 0;">
            <p style="font-size: 12px; color: #888;">
                Em caso de dúvidas, entre em contato: [email protected]
            </p>
        </div>
    </body>
    </html>';
    
    enviarEmail($email, $assunto, $corpo);
}

Email de recuperação de senha

<?php
function emailRecuperacaoSenha(string $email, string $conta, string $token): void {
    $link = "https://www.meuservidor.com.br/reset-senha?token=" . urlencode($token);
    
    $assunto = 'Recuperação de Senha - Servidor MU';
    
    $corpo = '
    <html>
    <body style="font-family: Arial; background: #1a1a2e; color: #eee; padding: 20px;">
        <div style="max-width: 600px; margin: 0 auto; background: #16213e; padding: 30px;">
            <h2>Recuperação de Senha</h2>
            <p>Recebemos uma solicitação de redefinição de senha para a conta: 
               <strong>' . htmlspecialchars($conta) . '</strong></p>
            <p>Clique no botão abaixo para criar uma nova senha:</p>
            <a href="' . $link . '" 
               style="display:inline-block; background:#e94560; color:#fff; 
                      padding:10px 20px; border-radius:5px; text-decoration:none;">
               Redefinir Senha
            </a>
            <p style="font-size: 12px; color: #888; margin-top: 20px;">
                Este link expira em 1 hora. Se você não solicitou a redefinição, ignore este email.
            </p>
        </div>
    </body>
    </html>';
    
    enviarEmail($email, $assunto, $corpo);
}

// Implementação básica de recuperação de senha no banco:
function gerarTokenRecuperacao(string $conta, PDO $db): string {
    $token = bin2hex(random_bytes(32));
    $expira = date('Y-m-d H:i:s', time() + 3600); // 1 hora
    
    $db->prepare("
        INSERT INTO PasswordResets (account_id, token, expires_at) 
        VALUES (?, ?, ?)
        ON DUPLICATE KEY UPDATE token = VALUES(token), expires_at = VALUES(expires_at)
    ")->execute([$conta, $token, $expira]);
    
    return $token;
}

Notificação de VIP expirando

<?php
function emailVIPExpirando(string $email, string $conta, int $diasRestantes): void {
    $assunto = "VIP expirando em $diasRestantes dias - Servidor MU";
    
    $corpo = '
    <html><body style="font-family: Arial; background: #1a1a2e; color: #eee; padding: 20px;">
        <div style="max-width: 600px; margin: 0 auto; background: #16213e; padding: 30px;">
            <h2>⚠️ Seu VIP está expirando!</h2>
            <p>Seu VIP Premium expira em <strong>' . $diasRestantes . ' dias</strong>.</p>
            <p>Renove agora para continuar aproveitando os bônus exclusivos!</p>
            <a href="https://www.meuservidor.com.br/vip" 
               style="display:inline-block; background:#f39c12; color:#fff; 
                      padding:10px 20px; border-radius:5px; text-decoration:none;">
               Renovar VIP
            </a>
        </div>
    </body></html>';
    
    enviarEmail($email, $assunto, $corpo);
}

Alerta automático para o admin

<?php
// Alertas para o administrador

function alertaAdmin(string $tipo, string $mensagem): void {
    $admin_email = '[email protected]';
    $assunto = "[ADMIN ALERTA] $tipo - Servidor MU";
    
    $corpo = '
    <html><body>
        <h3>Alerta Automático do Servidor</h3>
        <p><strong>Tipo:</strong> ' . htmlspecialchars($tipo) . '</p>
        <p><strong>Mensagem:</strong> ' . htmlspecialchars($mensagem) . '</p>
        <p><strong>Data/Hora:</strong> ' . date('d/m/Y H:i:s') . '</p>
    </body></html>';
    
    enviarEmail($admin_email, $assunto, $corpo);
}

// Usar:
alertaAdmin('Novo Registro', 'Conta "novoUsuario123" criada com IP 200.100.50.25');
alertaAdmin('Ban aplicado', 'Conta "hacker01" banida por GM-admin às 15:30');

Testar com Mailtrap (ambiente de desenvolvimento)

O Mailtrap captura todos os emails sem entregá-los — perfeito para testar:

  1. Crie conta em mailtrap.io;
  2. Em Inboxes → My Inbox → SMTP Settings → selecione PHPMailer;
  3. Copie as configurações fornecidas:
<?php
// Configuração Mailtrap para testes
$mail->isSMTP();
$mail->Host       = 'sandbox.smtp.mailtrap.io';
$mail->SMTPAuth   = true;
$mail->Username   = 'seu_username_mailtrap';
$mail->Password   = 'sua_senha_mailtrap';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 2525;

Com Mailtrap, todos os emails aparecem no painel online — você vê HTML, texto, cabeçalhos, sem afetar usuários reais.

Testar se o email está funcionando

<?php
// test-email.php — executar uma vez para testar
require 'email.php';

$ok = enviarEmail('[email protected]', 'Teste de Email', '<p>Email funcionando!</p>');

if ($ok) {
    echo "Email enviado com sucesso!";
} else {
    echo "Falha no envio. Verifique as configurações SMTP.";
}

Problemas comuns

ErroCausaSolução
SMTP connect() failedPorta ou host incorretoVerificar HOST e PORT
534: Need to enable app accessApp Password não configuradoCriar App Password no Google
535: Authentication failedUsuário ou senha incorretosVerificar credenciais SMTP
Email vai para spamDomínio sem SPF/DKIMConfigurar SPF no DNS do domínio
Timeout ao enviarFirewall bloqueando porta 587Testar com porta 465 ou verificar firewall VPS

Configurar SPF para não cair no spam

Se você tem domínio próprio (meuservidor.com.br), adicione registro SPF no DNS:

; Registro TXT no DNS (painel do Registro.br ou provedor de domínio)
; Autoriza o Gmail a enviar emails pelo seu domínio

Tipo:  TXT
Nome:  @  (raiz do domínio)
Valor: v=spf1 include:_spf.google.com ~all
TTL:   3600

Com SPF configurado, emails enviados pelo Gmail com o seu domínio no From: têm muito menor chance de ir para spam.

Perguntas frequentes

O servidor de MU (GameServer) envia emails?

Não — o GameServer não tem funcionalidade de email. Os emails são enviados pelo site do servidor (PHP) — confirmação de cadastro, recuperação de senha, notificações de VIP.

Preciso de SMTP para fazer o site funcionar?

Não é obrigatório para o site funcionar, mas é necessário para recursos como recuperação de senha, confirmação de email e notificações automáticas.

Gmail SMTP é confiável para servidores de MU?

Sim, mas tem limite de 500 emails/dia na conta gratuita. Para servidores maiores, use um serviço transacional como SendGrid (100 emails/dia gratuito) ou Brevo.

Como testar o envio de email sem enviar para usuários reais?

Use o Mailtrap — é um serviço de email para desenvolvimento que captura todos os emails sem entregá-los de verdade.

RO
Fundador e editor-chefe

Rodrigo mantém o ViciadosMU desde os primórdios do portal. Especialista em criação e administração de servidores de MU Online, história do jogo e a evolução das seasons — escreveu boa parte do acervo antes de 2024.

Continue lendo

Artigos relacionados