Проблемы с отправкой email на обычный Gmail-аккаунт могут быть вызваны несколькими причинами. Рассмотрим основные из них и возможные решения:
1. **Настройки хостинга и SPF/DKIM**:
- Некоторые хостинги могут ограничивать отправку почты через функцию `mail()`. Убедитесь, что ваш хостинг допускает отправку писем на внешние адреса (в данном случае на Gmail).
- Проверьте настройки SPF и DKIM для своего домена. Это важно для предотвращения попадания ваших писем в спам. Gmail может блокировать письма, если они не проходят эти проверки.
2. **Отправитель (From)**:
- Вы указываете переменную `$email` как отправителя (`From`). Gmail может отклонять такие письма, если адрес отправителя не соответствует домену вашего хостинга. Попробуйте указать адрес, принадлежащий вашему домену, например: `From: noreply@yourdomain.com`.
3. **Использование SMTP**:
- Использование функции `mail()` иногда может быть проблематичным. Рекомендуется использовать библиотеку для работы с SMTP, такие как PHPMailer или SwiftMailer. Эти библиотеки позволяют более надежно настраивать параметры отправки и получать сообщения об ошибках.
Пример использования PHPMailer для отправки сообщения через Gmail:
```php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$phone = htmlspecialchars($_POST['phone']);
$transport = htmlspecialchars($_POST['transport']);
$to = 'geoomarine@geoomarine.com';
$subject = 'Сообщение с сайта';
$body = "Имя: $name\nEmail: $email\n\nТелефон: $phone\n\nВыбранный транспорт: $transport";
$mail = new PHPMailer(true);
try {
// Настройки сервера
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'your_gmail@gmail.com'; // ваш Gmail
$mail->Password = 'your_password'; // ваш пароль или пароль приложений
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
// Получатели
$mail->setFrom('your_gmail@gmail.com', 'Your Name');
$mail->addAddress($to);
// Контент
$mail->isHTML(false);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->send();
include 'Page 2.html'; // Страница после успешной отправки
} catch (Exception $e) {
include 'Page 2.html'; // Страница при ошибке отправки
}
} else {
include 'Page 2.html'; // Если форма не отправлена
}
```
4. **Убедитесь, что нет ошибок в коде**:
- Проверьте наличие синтаксических ошибок и правильность подключения библиотеки PHPMailer.
5. **Лимиты отправки почты**:
- У Gmail есть лимиты на отправку почты, которые могут быть превышены. Убедитесь, что вы не превышаете эти лимиты.
6. **Проверьте спам-фильтр**:
- Иногда письма просто оказываются в папке «Спам». Убедитесь, что это не так.
Подводя итог, лучше всего использовать библиотеку для работы с SMTP, что значительно упростит настройку и повысит надежность отправки сообщений.