sboo/laravel5-mailjet

Laravel 5 的 Mailjet 驱动程序

此包的规范存储库似乎已不存在,因此该包已被冻结。

v1.0.5 2016-08-29 13:42 UTC

This package is not auto-updated.

Last update: 2024-02-17 13:55:58 UTC


README

不幸的是,这个库暂时不会再更新了,因为我没有足够的时间再继续工作。

Laravel 5 Mailjet 集成

此包扩展了 Laravel 5 的 MailService,以实现基于 Mailjet API v3 的 Mailjet 集成。

安装

首先,您需要将此包包含在您的 composer.json 文件中。

"require": {
    "sboo/laravel5-mailjet" : "1.0.*"
}

现在,您将通过 composer 更新或安装。

composer update

接下来,打开 app/config/app.php,将 MailServiceProvider 替换为

'Sboo\Laravel5Mailjet\MailjetServiceProvider'

注意 替换默认的服务提供者非常重要,以避免冲突。您不会丢失任何关于邮件驱动程序的原有功能,它们仍然可用。

配置很简单:在您的 config/services.php 中添加以下条目

'mailjet' => [
    'key' => 'APIKEY',
    'secret' => 'APISECRET',
],

并将值替换为您的相应 API 密钥和密钥。

接下来,将您的 config/mail.php 或 .env 文件中的邮件驱动程序更改为 'mailjet',并确保您配置了有效的授权发件人地址。

这样就完成了。有关用法,请参阅Laravel 5 邮件文档

##API 访问##

我还集成了对 Mailjet API 的直接访问,基于他们的示例代码

要安装,请将别名追加到 config/app.php 中

'Mailjet'   => 'Sboo\Laravel5Mailjet\Facades\Mailjet',

要在代码中使用 API,请添加

use Mailjet;

示例

基于https://github.com/mailjet/mailjet-apiv3-php-simple/blob/master/README.md

SendAPI

  • 发送电子邮件的函数
function sendEmail() {
    $params = [
        "method" => "POST",
        "from" => "ms.mailjet@example.com",
        "to" => "mr.mailjet@example.com",
        "subject" => "Hello World!",
        "text" => "Greetings from Mailjet."
    ];

    $result = Mailjet::sendEmail($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - email sent";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 发送带附件的电子邮件的函数(您的计算机上的绝对路径)
function sendEmailWithAttachments() {
    $params = [
        "method" => "POST",
        "from" => "ms.mailjet@example.com",
        "to" => "mr.mailjet@example.com",
        "subject" => "Hello World!",
        "text" => "Greetings from Mailjet.",
        "attachment" => ["@/path/to/first/file.txt", "@/path/to/second/file.txt"]
    ];

    $result = Mailjet::sendEmail($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - email sent";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 发送带内联附件的电子邮件的函数(您的计算机上的绝对路径)
function sendEmailWithInlineAttachments() {
    
    $params = [
        "method" => "POST",
        "from" => "ms.mailjet@example.com",
        "to" => "mr.mailjet@example.com",
        "subject" => "Hello World!",
        "html" => "<html>Greetings from Mailjet <img src=\"cid:photo1.jpg\"><img src=\"cid:photo2.jpg\"></html>",
    "inlineattachment" => ["@/path/to/photo1.jpg", "@/path/to/photo2.jpg"]
    ];

    $result = Mailjet::sendEmail($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - email sent";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

账户设置

  • 获取您的配置文件信息的函数
function viewProfileInfo() {
    
    $result = Mailjet::myprofile();

    if (Mailjet::getResponseCode() == 200)
       echo "success - got profile information";
    else
       echo "error - ".Mailjet::getResponseCode();
}
  • 更新配置文件字段 AddressCity 的函数
function updateProfileInfo() {
    
    $params = [
        "method" => "PUT",
        "AddressCity" => "New York"
    ];

    $result = Mailjet::myprofile($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - field AddressCity changed";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

联系人列表

  • 打印您的联系人列表的函数
function listContacts()
{
    
    $result = Mailjet::contact();

    if (Mailjet::getResponseCode() == 200)
       echo "success - listed contacts";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 使用数组更新 ID 为 $id 的联系人数据资源的函数
function updateContactData($id) {
    
    $data = [
        ['Name' => 'lastname', 'Value' => 'Jet'], 
        ['Name' => 'firstname', 'Value' => 'Mail']
    ];
    $params = [
        'ID' => $id,
        'Data' => $data,
        'method' => 'PUT'
    ];

    $result = Mailjet::contactdata($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - data changed";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 创建名为 $Lname 的列表的函数
function createList($Lname) {
    
    $params = [
        "method" => "POST",
        "Name" => $Lname
    ];

    $result = Mailjet::contactslist($params);

    if (Mailjet::getResponseCode() == 201)
       echo "success - created list ".$Lname;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 获取 ID 为 $listID 的列表的函数
function getList($listID) {
    
    $params = [
        "method" => "VIEW",
        "ID" => $listID
    ];

    $result = Mailjet::contactslist($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - got list ".$listID;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

注意:您可以使用资源的唯一字段而不是 ID,例如,在示例中,您可以在 params 数组中使用 "unique" => "test@gmail.com"

  • 创建具有电子邮件 $Cemail 的联系人的函数
function createContact($Cemail) {
    
    $params = [
        "method" => "POST",
        "Email" => $Cemail
    ];

    $result = Mailjet::contact($params);

    if (Mailjet::getResponseCode() == 201)
       echo "success - created contact ".$Cname;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 将 ID 为 $contactID 的联系人添加到 ID 为 $listID 的列表的函数
function addContactToList($contactID, $listID) {
    
    $params = [
        "method" => "POST",
        "ContactID" => $contactID,
        "ListID" => $listID,
        "IsActive" => "True"
    ];

    $result = Mailjet::listrecipient($params);

    if (Mailjet::getResponseCode() == 201)
       echo "success - contact ".$contactID." added to the list ".$listID;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 一个用于删除ID为$listID的列表的函数
function deleteList($listID) {
    
    $params = [
        "method" => "DELETE",
        "ID" => $listID
    ];

    $result = Mailjet::contactslist($params);

    if (Mailjet::getResponseCode() == 204)
       echo "success - deleted list";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • 一个用于从ID为$listID的列表中获取未订阅的联系人的函数
function getUnsubscribedContactsFromList($listID) {
	
	
	$params = [
		"method" => "GET",
		"ContactsList" => $listID,
		"Unsub" => true
	];
	
	$result = Mailjet::listrecipient($params);
	
    if (Mailjet::getResponseCode() == 200)
       echo "success - got unsubscribed contact(s) ";
    else
       echo "error - ".Mailjet::getResponseCode();
   
	return $result;   
}
  • 一个用于获取ID为$contactID的联系人的函数
function getContact($contactID) {
    
    $params = [
        "method" => "VIEW",
        "ID" => $contactID
    ];

    $result = Mailjet::contact($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - got contact ".$contactID;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

注意:您可以使用资源的唯一字段而不是 ID,例如,在示例中,您可以在 params 数组中使用 "unique" => "test@gmail.com"

通讯录

您可以使用DetailContent操作来管理通讯录的内容,包括文本和Html。它有两个属性:Text部分Html部分。您可以使用GETPOSTPUTDELETE对这一操作进行请求

  • GET:您将获取通讯录的Text部分Html部分属性
  • POST:更新Text部分Html部分的内容。如果您只指定一个,另一个将被清空
  • PUT:更新Text部分Html部分的内容。您只能指定一个,它不会清空另一个
  • DELETE:更新Text部分Html部分的内容,并将两者都置为空。

使用GETDetailContent上的示例

function getNewsletterDetailcontent($newsletter_id) {
    $params = [
        "method" => "GET",
        "ID" => $newsletter_id
    ];

    $result = Mailjet::newsletterDetailContent($params);

    if (Mailjet::getResponseCode() == 200)
        echo "success - got content for the newsletter ". $newsletter_id;
    else
        echo "error - ".Mailjet::getResponseCode();
    
    return $result;
}

使用schedule操作来延迟发送通讯录。您只需要执行一个POST请求来安排新的发送,并将date属性填充为ISO 8601格式的Timestamp:http://www.iso.org/iso/home/standards/iso8601.htm 您还可以在此处DELETE一个安排

function scheduleNewsletter($newsletter_id) {
    $params = [
        "method" => "POST",
        "ID" => $newsletter_id,
        "date" => "2014-11-25T10:12:59Z"
    );

    $result = Mailjet::newsletterSchedule($params);

    if (Mailjet::getResponseCode() == 201)
        echo "success - schedule done for the newsletter ". $newsletter_id;
    else
        echo "error - ".Mailjet::getResponseCode();
    
    return $result;
}

立即发送通讯录,您有两个选择

  • 使用一个值是NOW的TimestampPOST一个新的安排
  • 使用发送(仅支持POST)对于第二种情况,这里有一个示例
function sendNewsletter($newsletter_id) {
    
    $params = [
        "method" => "POST",
        "ID" => $newsletter_id
    ];

    $result = Mailjet::newsletterSend($params);

    if (Mailjet::getResponseCode() == 201)
        echo "success - newsletter ". $newsletter_id . " has been sent";
    else
        echo "error - ".Mailjet::getResponseCode();
    
    return $result;
}

您还可以在正式发送之前通过发送到一些指定的收件人来测试通讯录。为此,您需要对一个具有test操作的通讯录执行一个POST请求,如下面的示例所示

function testNewsletter($newsletter_id) {
    
    $recipients = [
        ['Email' => 'mailjet@example.org', 'Name' => 'Mailjet']
    ];
    $params = [
        "method" => "POST",
        "ID" => $newsletter_id,
        "Recipients" => $recipients
    ];

    $result = Mailjet::newsletterTest($params);

    if (Mailjet::getResponseCode() == 201)
        echo "success - newsletter ". $newsletter_id . " has been sent";
    else
        echo "error - ".Mailjet::getResponseCode();
    
    return $result;
}