Email Newsletter Integration (Brevo/Sendinblue)
Brevo (formerly Sendinblue) is a multi-channel platform with good price/functionality ratio. Provides email, SMS, WhatsApp, push notifications, and CRM in one place. Free plan: 300 emails/day.
API Connection
// composer require brevo/php-api-v3-sdk
$config = Brevo\Client\Configuration::getDefaultConfiguration()
->setApiKey('api-key', env('BREVO_API_KEY'));
$apiInstance = new Brevo\Client\Api\TransactionalEmailsApi(
new GuzzleHttp\Client(), $config
);
$sendSmtpEmail = new \Brevo\Client\Model\SendSmtpEmail([
'subject' => "Order #{$orderId} Confirmed",
'sender' => ['name' => 'Store', 'email' => '[email protected]'],
'to' => [['name' => $name, 'email' => $to]],
'htmlContent' => $htmlBody,
'params' => ['ORDER_ID' => $orderId, 'TOTAL' => $total]
]);
$apiInstance->sendTransacEmail($sendSmtpEmail);
Transactional Template
$email = new \Brevo\Client\Model\SendSmtpEmail([
'templateId' => 42, // Template ID in Brevo
'to' => [['email' => $to]],
'params' => ['ORDER_ID' => $orderId, 'NAME' => $name]
]);
Managing Contacts
$contactsApi = new Brevo\Client\Api\ContactsApi(new GuzzleHttp\Client(), $config);
$createContact = new \Brevo\Client\Model\CreateContact([
'email' => $email,
'attributes' => ['FNAME' => $firstName, 'LNAME' => $lastName],
'listIds' => [intval(env('BREVO_LIST_ID'))],
'updateEnabled' => true // upsert
]);
$contactsApi->createContact($createContact);
SMTP for Laravel
MAIL_MAILER=smtp
MAIL_HOST=smtp-relay.brevo.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=your-smtp-password
MAIL_ENCRYPTION=tls
Integration timeline: 1 business day.







