Laravel¶
Инструкция для приложений на Laravel (10.x и 11.x). Mailexam подключается как обычный SMTP-сервер — меняется только конфигурация в .env, код отправки (Mail, Mailable, очереди) остаётся прежним.
Что понадобится¶
- Аккаунт Mailexam и созданный проект с SMTP-учётными данными.
- Laravel-приложение с настроенным модулем почты (
config/mail.phpпо умолчанию).
Скопируйте из приветственного письма (или кабинета) для вашего проекта:
ВАШ_ЛОГИН— SMTP-логин (например,xxxxx);ВАШ_ПАРОЛЬ— SMTP-пароль (уникальная пара к логину);- хост в письме —
ВАШ_ЛОГИН.mailexam.ru(имя хоста совпадает с логином).
1. Настройка .env¶
Добавьте или обновите переменные почты:
MAIL_MAILER=smtp
MAIL_HOST=ВАШ_ЛОГИН.mailexam.ru
MAIL_PORT=587
MAIL_USERNAME=ВАШ_ЛОГИН
MAIL_PASSWORD=ВАШ_ПАРОЛЬ
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@example.test
MAIL_FROM_NAME="${APP_NAME}"
Адрес отправителя
MAIL_FROM_ADDRESS может быть любым тестовым адресом — письмо всё равно попадёт в Mailexam, а не к реальному получателю. Для единообразия в тестах удобно использовать домен *.test или @example.com.
Альтернативные порты¶
Примените конфигурацию:
В production после проверки можно закешировать: php artisan config:cache.
2. Проверка config/mail.php¶
В стандартном Laravel файл config/mail.php уже читает переменные из .env. Дополнительных правок обычно не требуется. Убедитесь, что mailer smtp использует env('MAIL_HOST'), env('MAIL_PORT') и т.д.
3. Отправка тестового письма¶
Через Tinker¶
use Illuminate\Support\Facades\Mail;
Mail::raw('Тест Mailexam из Laravel', function ($message) {
$message->to('user@example.test')
->subject('Laravel + Mailexam');
});
Через Mailable¶
// app/Mail/WelcomeTestMail.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class WelcomeTestMail extends Mailable
{
use Queueable, SerializesModels;
public function envelope(): Envelope
{
return new Envelope(subject: 'Добро пожаловать (тест)');
}
public function content(): Content
{
return new Content(view: 'emails.welcome-test');
}
}
use App\Mail\WelcomeTestMail;
use Illuminate\Support\Facades\Mail;
Mail::to('user@example.test')->send(new WelcomeTestMail());
Откройте личный кабинет Mailexam → проект → входящие: письмо должно появиться в течение нескольких секунд.
4. Локальная разработка и CI¶
| Среда | Рекомендация |
|---|---|
local |
Отдельный проект Mailexam на разработчика или общий тестовый проект команды |
staging |
Свой проект Mailexam, те же .env через секреты CI |
| PHPUnit | Либо реальный SMTP Mailexam в интеграционных тестах, либо MAIL_MAILER=array / log для unit-тестов без сети |
Пример переменных в GitLab CI (Settings → CI/CD → Variables):
variables:
MAIL_MAILER: smtp
MAIL_HOST: "${MAILEXAM_LOGIN}.mailexam.ru"
MAIL_PORT: "587"
MAIL_USERNAME: "${MAILEXAM_LOGIN}"
MAIL_PASSWORD: "${MAILEXAM_PASSWORD}"
MAIL_ENCRYPTION: tls
После отправки письма в pipeline можно проверить доставку через API Mailexam.
5. Типичные проблемы¶
Connection could not be established
MAIL_HOSTдолжен бытьВАШ_ЛОГИН.mailexam.ru— тот же логин, что вMAIL_USERNAME, без префиксаsmtp..- Логин и пароль берите парой из письма, не смешивайте с другим проектом.
- Выполните
php artisan config:clearпосле изменения.env.
Письмо не видно в кабинете
- Проверьте, что смотрите входящие того же проекта, чьи учётные данные в
.env. - Убедитесь, что отправка не ушла в очередь с ошибкой:
php artisan queue:workи логиstorage/logs/laravel.log.
SSL/TLS ошибки
- Для порта 587 используйте
MAIL_ENCRYPTION=tls, неssl. - Порт 465 с
sslподдерживается, но не рекомендуется для новых интеграций.