%PDF- %PDF-
| Direktori : /var/www/projetos/davidrrsoares.com.br/php/ |
| Current File : /var/www/projetos/davidrrsoares.com.br/php/sendmail.php |
<?php
// Headers CORS
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Content-Type: application/json; charset=utf-8");
// Handle preflight OPTIONS request
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit();
}
// Requires do PHPMailer (linhas 12-16)
// Assumindo que sendmail.php está em /var/www/projetos/davidrrsoares.com.br/php/
// e a biblioteca PHPMailer está em /var/www/projetos/davidrrsoares.com.br/libs/phpmailer/
// Ajuste os caminhos se a estrutura de pastas for diferente.
require '../libs/phpmailer/src/Exception.php';
require '../libs/phpmailer/src/PHPMailer.php';
require '../libs/phpmailer/src/SMTP.php';
// --- CORREÇÃO 1: Adicionar o uso correto do namespace PHPMailer ---
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Variáveis SMTP (linhas 18-25)
$smtpHost = 'smtplw.com.br';
$smtpPort = 587; // Ou 587 para TLS
$smtpUsername = 'nures';
$smtpFrom = 'noreply@ongrace.com';
$smtpTo = 'gabinetedavidsoares@gmail.com';
$smtpPassword = 'ofRTPqWe9689'; // Substitua pela sua senha real do SMTP
$smtpSecure = PHPMailer::ENCRYPTION_STARTTLS; // Use SMTPS para porta 465, ou STARTTLS para porta 587
// --- CORREÇÃO 2: Definir a variável $email_conteudo e $email_assunto antes de serem usadas ---
$email_conteudo = ''; // Inicializa a variável para evitar o warning de "Undefined variable"
$email_assunto = ''; // Inicializa também o assunto
// Validação $_POST['nome'] (linhas 27-50)
if (isset($_POST['nome']) && !empty($_POST['nome'])) {
$nome = utf8_encode(filter_var($_POST['nome'], FILTER_SANITIZE_STRING));
$email = utf8_encode(filter_var($_POST['email'], FILTER_SANITIZE_EMAIL));
$assunto = 'Fale comigo cadastro';//utf8_encode(filter_var($_POST['assunto'], FILTER_SANITIZE_STRING));
$mensagem = utf8_encode(filter_var($_POST['mensagem'], FILTER_SANITIZE_STRING));
// Montar $email_conteudo ANTES de ser usado
$email_conteudo = "
<html>
<head>
<title>Contato via Site</title>
</head>
<body>
<h1>Nova Mensagem de Contato</h1>
<p><strong>Nome:</strong> {$nome}</p>
<p><strong>Email:</strong> {$email}</p>
<p><strong>Assunto:</strong> {$assunto}</p>
<p><strong>Mensagem:</strong> {$mensagem}</p>
</body>
</html>
";
$email_assunto = "Contato via Site: " . $assunto;
}
// Validação $_POST['whatsapp'] (linhas 52-65)
elseif (isset($_POST['whatsapp']) && !empty($_POST['whatsapp'])) {
$nome = utf8_encode(filter_var($_POST['nome'], FILTER_SANITIZE_STRING));
$whatsapp = utf8_encode(filter_var($_POST['whatsapp'], FILTER_SANITIZE_STRING));
$mensagem = utf8_encode(filter_var($_POST['mensagem'], FILTER_SANITIZE_STRING));
// Montar $email_conteudo ANTES de ser usado
$email_conteudo = "
<html>
<head>
<title>Contato via WhatsApp</title>
</head>
<body>
<h1>Nova Mensagem de Contato via WhatsApp</h1>
<p><strong>Nome:</strong> {$nome}</p>
<p><strong>WhatsApp:</strong> {$whatsapp}</p>
<p><strong>Mensagem:</strong> {$mensagem}</p>
</body>
</html>
";
$email_assunto = "Contato via WhatsApp: " . $nome;
} else {
// No valid POST data received
echo json_encode(['status' => 'error', 'message' => 'Dados inválidos ou incompletos.']);
exit();
}
// --- CORREÇÃO 3 & 4: Melhorar o tratamento de erros com ErrorInfo do PHPMailer e try-catch ---
$sendMail = new PHPMailer(true); // Passa 'true' para habilitar exceções
try {
// Configurações do servidor SMTP
$sendMail->isSMTP();
$sendMail->Host = $smtpHost;
$sendMail->SMTPAuth = true;
$sendMail->Username = $smtpUsername;
$sendMail->Password = $smtpPassword;
$sendMail->SMTPSecure = $smtpSecure;
$sendMail->Port = $smtpPort;
$sendMail->CharSet = 'UTF-8'; // Garante a codificação correta dos caracteres
// Destinatários
$sendMail->setFrom($smtpFrom, 'Contato Site David Soares');
$sendMail->addAddress($smtpTo); // Envia para você mesmo
// Conteúdo do email
$sendMail->isHTML(true);
$sendMail->Subject = $email_assunto;
$sendMail->Body = $email_conteudo;
$sendMail->AltBody = strip_tags($email_conteudo); // Versão em texto puro para clientes de email que não suportam HTML
// --- CORREÇÃO 3: Mudar $sendMail->Send() para $sendMail->send() (método correto em versões modernas) ---
$sendMail->send();
// Resposta JSON (linhas 92-98)
// --- CORREÇÃO 5: Na resposta de sucesso, retornar a variável $email_conteudo corretamente ---
echo json_encode(['enviado' => true, 'message' => 'Email enviado com sucesso!', 'email_conteudo' => $email_conteudo]);
} catch (Exception $e) {
// Tratamento de erro detalhado com ErrorInfo do PHPMailer
echo json_encode(['enviado' => false, 'message' => 'Erro ao enviar email: ' . $sendMail->ErrorInfo]);
}
?>