This library adds a 'pepipost' mail driver to Laravel.This library is a copy of https://github.com/pepipost/pepipost-laravel-driver

3.0 2021-10-18 12:16 UTC

This package is auto-updated.

Last update: 2024-04-18 17:34:33 UTC


README

This project is a copy of pepipost/pepipost-laravel-driver, with some customizations to make it compatible with Laravel 5.2

Laravel Driver for Pepipost

A Mail Driver with support for Pepipost Send Email Web API, using the original Laravel API. This library extends the original Laravel classes, so it uses exactly the same methods.

To use this package required your Pepipost Api Key. Please make it Here.

We are trying to make our libraries Community Driven- which means we need your help in building the right things in proper order we would request you to help us by sharing comments, creating new issues or pull requests.

We welcome any sort of contribution to this library.

The latest 1.0.0 version of this library provides is fully compatible with the latest Pepipost v2.0 API.

For any update of this library check Releases.

Table of Content

Installation

Prerequisites

PHP >= 5.5.9

Laravel 5.2

guzzlehttp/guzzle ~5.3|~6.0

A free account on Pepipost. If you don't have a one, click here to signup.

Usage

Configuring laravel project

Step 1 - Create New Laravel project

laravel new testproject

Step 2 - Add the package to your composer.json and run composer update.

"require": {
    "divya2407sharma/pepipost": "~1.0"
},

or install with composer

$ composer require divya2407sharma/pepipost

Step 3 - Configurations

  1. Add the pepipost service provider in config/app.php: (Laravel 5.5+ uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.)

    'providers' => [
        DS\PepiPost\PepipostTransportServiceProvider::class
    ];
  2. Add pepipost api key, endpoint in config/services.php

        'pepipost' => [
            'api_key' => env('PEPIPOST_API_KEY'),
        ],
     endpoint config
    
     If you need to set custom endpoint, you can set any endpoint by using endpoint key.
     For example,calls to Pepipost Web API through a proxy,configure endpoint in config/services.php.
    
           
       'pepipost' => [
               'api_key' => env('PEPIPOST_API_KEY'),
               'endpoint' => 'https://api.pepipost.com/v2/sendEmail',
           ],
    
  3. Add following in .env file

    MAIL_DRIVER=pepipost
    
    PEPIPOST_API_KEY='YOUR_PEPIPOST_API_KEY'

Step 4- Laravel Steps to create controller and view

  1. Define Controller

    php artisan make:controller TestController
    
  2. create file in resources/views/viewname/name.blade.php and include your email content

    include following function sendMail in TestController to send viewname.name as content of email and initialize $data to use it on view page

    function sendMail(){
    
    Mail::send('viewname.name',$data, function ($message) {
        $message
            ->to('foo@example.com', 'foo_name')
            ->from('sender@example.com', 'sender_name')
            ->subject('subject')
            ->cc('cc@example.com','recipient_cc_name')
            ->bcc('recipient_bcc@example.com','recipient_bcc_name')
            ->replyTo('reply_to@example.com','recipient_bcc')
            ->attach('/myfilename.pdf');
    });
    
    return 'Email sent successfully';
    }
  3. Create Route in routes/web.php

    Route::get('/send/email', 'TestController@sendMail')->name('sendEmail');

Step 5 - Testing

Host your laravel project and enter url- http://your_url.com/send/email in browser

This will send email and display Email sent successfully on browser.

Additional Usage

IF want to pass others parameters of PepiPost SendEmail API use embedData function and include below code as below Add parameters as per your requirement. Do not use multiple to's,cc's,bcc's with this method.

function sendMail(){

Mail::send('viewname.name',$data, function ($message) {
    $message
        ->to('foo@example.com', 'foo_name')
        ->from('sender@example.com', 'sender_name')
        ->subject('subject')
        ->cc('cc@example.com','recipient_cc_name')
        ->bcc('recipient_bcc@example.com','recipient_bcc_name')
        ->replyTo('reply_to@example.com','recipient_bcc')
        ->attach('/myfilename.pdf')
        ->embedData([
            'personalizations' => ['attributes'=>['ACCOUNT_BAL'=>'String','NAME'=>'NAME'],'x-apiheader'=>'x-apiheader_value','x-apiheader_cc'=>'x-apiheader_cc_value'],'settings' => ['bcc'=>'bccemail@gmail.com','clicktrack'=>1,'footer'=>1,'opentrack'=>1,'unsubscribe'=>1 ],'tags'=>'tags_value','templateId'=>''
        ],'pepipostapi');
        
 return 'Email sent successfully';
}       

For multiple to's,cc's,bcc's pass recipient,recipient_cc,recipient_bcc as below, create personalizations as required

function sendMail(){

Mail::send('viewname.name',$data, function ($message) {
    $message
        ->from('sender@example.com', 'sender_name')
        ->subject('subject')
        ->replyTo('reply_to'@example.com,'recipient_bcc')
        ->attach('/myfilename.pdf')
        ->embedData([
                    'personalizations' => [['recipient'=>'foo@example.com','attributes'=>['ACCOUNT_BAL'=>'String','NAME'=>'name'],'recipient_cc'=>['cc@example.com','cc2@example.com'],'recipient_bcc'=>['bcc@example.com','bcc2@example.com'],'x-apiheader'=>'x-apiheader_value','x-apiheader_cc'=>'x-apiheader_cc_value'],['recipient'=>'foo@example.com','attributes'=>['ACCOUNT_BAL'=>'String','NAME'=>'name'],'x-apiheader'=>'x-apiheader_value','x-apiheader_cc'=>'x-apiheader_cc_value']],'settings' => ['bcc'=>'bccemail@gmail.com','clicktrack'=>1,'footer'=>1,'opentrack'=>1,'unsubscribe'=>1 ],'tags'=>'tags_value','templateId'=>''
                ],'pepipostapi');
        });
        
return 'Email sent successfully';
}

License

MIT