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.
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ço | Emails/dia (grátis) | Para | Complexidade |
|---|---|---|---|
| Gmail SMTP | 500/dia | Pequenos servidores | Baixa |
| SendGrid | 100/dia | Crescimento | Baixa |
| Brevo (ex-Sendinblue) | 300/dia | Crescimento | Baixa |
| Mailtrap | Apenas testes | Desenvolvimento | Baixa |
| SMTP próprio (Postfix) | Ilimitado | Produção | Alta |
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
- Acesse sua conta Google → Conta → Segurança;
- Em Como você faz login no Google → Verificação em duas etapas (ativar se não estiver);
- Após ativar, volte em Segurança → Senhas de apps;
- Selecione App: Outro (nome personalizado) → escreva "Site MU Servidor";
- Clique em Gerar;
- 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:
- Crie conta em sendgrid.com;
- Em Settings → API Keys → Create API Key;
- Dê nome e selecione Full Access;
- 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:
- Crie conta em mailtrap.io;
- Em Inboxes → My Inbox → SMTP Settings → selecione PHPMailer;
- 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
| Erro | Causa | Solução |
|---|---|---|
SMTP connect() failed | Porta ou host incorreto | Verificar HOST e PORT |
534: Need to enable app access | App Password não configurado | Criar App Password no Google |
535: Authentication failed | Usuário ou senha incorretos | Verificar credenciais SMTP |
| Email vai para spam | Domínio sem SPF/DKIM | Configurar SPF no DNS do domínio |
| Timeout ao enviar | Firewall bloqueando porta 587 | Testar 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.