Как интегрировать Sengrid API с CI в качестве библиотеки - PullRequest
0 голосов
/ 22 апреля 2019

Мое приложение работает с CI, и для доставки электронной почты я использую Sendgrid API.

Я намерен использовать API SendGrid в качестве библиотеки, поэтому я могу загрузить его следующим образом: $this->load->library('my_ci_lib');

При поиске некоторых примеров единственный результат, который я обнаружил, - это настройка конфигураций SMTP Sendgrid в библиотеке электронной почты Native CI и его расширение.

Как использовать API Sendgrid в CI?

Это я использовал для использования API Sendgrid в сыром PHP:

<code><?php
require_once('../../class/SendGrid/sendgrid-php.php');

function welcomeEmail($email, $firstName, $password){
    require_once('_key.php');
    $chaves = array('{name}', '{key}');
    $template = utf8_decode(file_get_contents('../../templates/welcomePass.html'));
    $template = str_replace($chaves, array(utf8_decode($firstName), $password), $template);

    // $mail->SetFrom('no-reply'.rand(1, 100).'@domain.com.br', 'Domain');
    // $mail->Subject = utf8_decode('Seja bem-vindo(a)!');
    // $mail->Body = $template;
    // $mail->isHTML(true);
    // $mail->addTo($email);
    // //$mail->SMTPDebug = 3;

    $mail = new \SendGrid\Mail\Mail();
    $mail->setFrom("connectz.no-reply".rand(1, 100)."@domain.com.br", "CONNECTZ");
    $mail->setSubject("Seja bem-vindo(a)!");
    $mail->addTo($email);
    $mail->addBcc("joao.souza@domain.com.br");
    $mail->addContent("text/html", utf8_encode($template));
    $sendgrid = new \SendGrid($key);

    $response = $sendgrid->send($mail);
    // print $response->statusCode() . "<br>";
    // echo '<pre>'.print_r($response->headers()).'

';// напечатать $ response-> body ()."";}

1 Ответ

0 голосов
/ 23 апреля 2019

Так что это, вероятно, не лучший способ сделать это, но мне пришлось сделать следующее, чтобы интегрировать Cloudinary и MongoDB в мой сайт на базе CodeIgniter.

В папке application/library я создал файл Cloudinarylib.php с папкой cloudinary, в которой были все необходимые файлы.

<?php defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * This is a "dummy" library that just loads the actual library in the construct.
 * This technique prevents issues from CodeIgniter 3 when loading libraries that use PHP namespaces.
 * This file can be used with any PHP library that uses namespaces.  Just copy it, change the name of the class to match your library
 * and configs and go to town.
 */

class Cloudinarylib
{
    public function __construct()
    {
        $this->CI =& get_instance();

        // include the cloudinary library within the dummy class
        require('cloudinary/src/Cloudinary.php');
        require('cloudinary/src/Uploader.php');
        require('cloudinary/src/Api.php');

        // configure Cloudinary API connection
        \Cloudinary::config($this->CI->config->item('cloudinary'));
    }
}

После этого я смог загрузить библиотеку, используя $this->load->library('cloudinarylib');, и запустить такие сценарии, как \Cloudinary\Uploader::upload("https://www.example.com/uploads/".$file);

Надеюсь, это поможет.

...