mailersend/mailersend

MailerSend PHP SDK

v0.27.0 2024-08-28 12:00 UTC

README

MailerSend PHP SDK

MIT licensed build badge analysis badge

目录

安装

要求

  • PHP 7.4
  • 基于PSR-7和PSR-18的HTTP适配器
  • mailersend.com获取的API密钥

设置

从版本v0.22.0开始,本库与Laravel 8.0或更低版本不兼容。请使用较旧的SDK版本或更新您的Laravel版本。

本库基于PSR-7PSR-18构建。您需要安装这些接口的实现。

composer require php-http/guzzle7-adapter nyholm/psr7

之后,您可以安装SDK。

composer require mailersend/mailersend

最后,添加一个名为MAILERSEND_API_KEY的环境变量,并使用适当的API密钥。

可选的,尽管不推荐,您可以在实例化MailerSend类时手动添加API密钥,如下所示

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'your_api_key']);

使用

电子邮件

发送电子邮件

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setHtml('This is the HTML content')
    ->setText('This is the text content')
    ->setReplyTo('reply to')
    ->setReplyToName('reply to name');

$mailersend->email->send($emailParams);

HTML内容不是必需的。您仍然可以使用纯文本发送电子邮件。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setText('This is the text content');

$mailersend->email->send($emailParams);

添加抄送(Cc)和暗送(Bcc)收件人

带有CC和BCC发送电子邮件。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$cc = [
    new Recipient('cc@mail.com', 'CC'),
];

$bcc = [
    new Recipient('bcc@mail.com', 'BCC'),
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setCc($cc)
    ->setBcc($bcc)
    ->setSubject('Subject')
    ->setHtml('This is the HTML content')
    ->setText('This is the text content');

$mailersend->email->send($emailParams);

发送基于模板的电子邮件

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$tags = ['tag'];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setTemplateId('ss243wdasd')
    ->setTags($tags);

$mailersend->email->send($emailParams);

高级个性化

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Personalization;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$personalization = [
    new Personalization('your@client.com', [
        'var' => 'variable',
        'number' => 123,
        'object' => [
            'key' => 'object-value'
        ],
        'objectCollection' => [
            [
                'name' => 'John'
            ],
            [
                'name' => 'Patrick'
            ]
        ],
    ])
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject {$var}')
    ->setHtml('This is the html version with a {$var}.')
    ->setText('This is the text versions with a {$var}.')
    ->setPersonalization($personalization);

$mailersend->email->send($emailParams);

发送带附件的电子邮件

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Attachment;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$attachments = [
    new Attachment(file_get_contents('attachment.jpg'), 'attachment.jpg')
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setHtml('This is the html version.')
    ->setText('This is the text version.')
    ->setAttachments($attachments);

$mailersend->email->send($emailParams);

发送定时消息

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setHtml('This is the html version.')
    ->setText('This is the text version.')
    ->setSendAt(1665626400);
    ->setPrecedenceBulkHeader(true);

$mailersend->email->send($emailParams);

发送带有优先级批量头部的电子邮件

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setHtml('This is the html version.')
    ->setText('This is the text version.')
    ->setPrecedenceBulkHeader(true);

$mailersend->email->send($emailParams);

发送带跟踪的电子邮件

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setHtml('This is the HTML content')
    ->setText('This is the text content')
    ->setTrackClicks(true)
    ->setTrackOpens(true)
    ->setTrackContent(true);

$mailersend->email->send($emailParams);

发送带自定义头部的电子邮件

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;
use MailerSend\Helpers\Builder\Header;

$mailersend = new MailerSend(['api_key' => 'key']);

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$headers = [
    new Header('Custom-Header-1', 'Value 1')
    new Header('Custom-Header-2', 'Value 2')
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject')
    ->setHtml('This is the HTML content')
    ->setText('This is the text content')
    ->setHeaders($headers);

$mailersend->email->send($emailParams);

批量电子邮件API

发送批量电子邮件

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend();

$bulkEmailParams = [];

$bulkEmailParams[] = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients([
        new Recipient('recipient1@client.com', 'Your Client'),
    ])
    ->setSubject('Subject')
    ->setHtml('This is the HTML content')
    ->setText('This is the text content');

$bulkEmailParams[] = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients([
        new Recipient('recipient2@client.com', 'Your Client'),
    ])
    ->setSubject('Subject')
    ->setHtml('This is the HTML content')
    ->setText('This is the text content');

$mailersend->bulkEmail->send($bulkEmailParams);

获取批量电子邮件状态

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->bulkEmail->getStatus('bulk_email_id');

入站路由

获取入站路由列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->inbound->getAll($domainId = 'domainId', $page = 1, $limit = 10);

获取单个入站路由

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->inbound->find('inboundId');

添加入站路由

仅使用类的示例

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Inbound;
use \MailerSend\Helpers\Builder\CatchFilter;
use \MailerSend\Helpers\Builder\MatchFilter;
use \MailerSend\Helpers\Builder\Forward;
use \MailerSend\Helpers\Builder\Filter;
use \MailerSend\Common\Constants;

$mailersend = new MailerSend();

$mailersend->inbound->create(
    (new Inbound('domainId', 'name', true))
        ->setInboundDomain('inboundDomain')
        ->setCatchFilter(
            (new CatchFilter(Constants::TYPE_CATCH_RECIPIENT)
                ->addFilter(new Filter(Constants::COMPARER_EQUAL, 'test@mailersend.com'))))
        ->setMatchFilter(
            (new MatchFilter(Constants::TYPE_MATCH_SENDER))
                ->addFilter(new Filter(Constants::COMPARER_EQUAL, 'sender@mailersend.com', 'sender')))
        ->addForward(new Forward(Constants::COMPARER_EQUAL, 'value'))
);

同时使用类和数组的示例

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Inbound;
use \MailerSend\Helpers\Builder\CatchFilter;
use \MailerSend\Helpers\Builder\MatchFilter;
use \MailerSend\Helpers\Builder\Forward;
use \MailerSend\Common\Constants;

$mailersend = new MailerSend();

$mailersend->inbound->create(
    (new Inbound('domainId', 'name', true))
        ->setInboundDomain('inboundDomain')
        ->setCatchFilter(
            (new CatchFilter(Constants::TYPE_CATCH_RECIPIENT))
                ->setFilters([
                    [
                        'comparer' => Constants::COMPARER_EQUAL,
                        'value' => 'test@mailersend.com',
                    ]
                ])
        )
        ->setMatchFilter(
            (new MatchFilter(Constants::TYPE_MATCH_SENDER))
                ->setFilters([
                    [
                        'comparer' => Constants::COMPARER_EQUAL,
                        'value' => 'sender@mailersend.com',
                        'key' => 'sender',
                    ]
                ])
        )
        ->addForward(new Forward(Constants::COMPARER_EQUAL, 'value'))
);

仅使用数组的示例

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Inbound;
use \MailerSend\Helpers\Builder\CatchFilter;
use \MailerSend\Helpers\Builder\MatchFilter;
use \MailerSend\Helpers\Builder\Forward;
use \MailerSend\Common\Constants;

$mailersend = new MailerSend();

$mailersend->inbound->create(
    (new Inbound('domainId', 'name', true))
        ->setInboundDomain('inboundDomain')
        ->setCatchFilter([
            'type' => Constants::TYPE_CATCH_RECIPIENT,
            'filters' => [
                [
                    'comparer' => Constants::COMPARER_EQUAL,
                    'value' => 'test@mailersend.com',
                ],
            ],
        ])
        ->setMatchFilter([
            'type' => Constants::TYPE_MATCH_SENDER,
            'filters' => [
                [
                    'comparer' => Constants::COMPARER_EQUAL,
                    'value' => 'sender@mailersend.com',
                    'key' => 'sender',
                ],
            ],
        ])
        ->setForwards([
            [
                'type' => Constants::COMPARER_EQUAL,
                'value' => 'value',
            ]
        ])
);

更新入站路由

在“添加入站路由”中展示的构建Inbound对象的示例也适用于此处。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Inbound;
use \MailerSend\Helpers\Builder\CatchFilter;
use \MailerSend\Helpers\Builder\MatchFilter;
use \MailerSend\Helpers\Builder\Forward;
use \MailerSend\Common\Constants;

$mailersend = new MailerSend();

$mailersend->inbound->update(
    'inboundId',
    (new Inbound('domainId', 'name', true))
        ->setInboundDomain('inboundDomain')
        ->setCatchFilter(
            (new CatchFilter(Constants::TYPE_CATCH_ALL))
        )
        ->setMatchFilter(new MatchFilter(Constants::TYPE_MATCH_ALL))
        ->addForward(new Forward(Constants::COMPARER_EQUAL, 'value'))
);

删除入站路由

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->inbound->delete('inboundId');

活动

获取活动列表

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\ActivityParams;

$mailersend = new MailerSend();

$activityParams = (new ActivityParams())
                    ->setPage(3)
                    ->setLimit(15)
                    ->setDateFrom(1623073576)
                    ->setDateTo(1623074976)
                    ->setEvent(['queued', 'sent']);

$mailersend->activity->getAll('domainId', $activityParams);

获取单个活动

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\ActivityParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->activity->find('activity_id');

分析

按日期获取活动数据

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\ActivityAnalyticsParams;
use MailerSend\Common\Constants;

$mailersend = new MailerSend();

$activityAnalyticsParams = (new ActivityAnalyticsParams(100, 101))
                    ->setDomainId('domain_id')
                    ->setGroupBy(Constants::GROUP_BY_DAYS)
                    ->setTags(['tag'])
                    ->setEvent(['queued', 'sent']);

$mailersend->analytics->activityDataByDate($activityAnalyticsParams);

按国家查看打开情况

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\OpensAnalyticsParams;

$mailersend = new MailerSend();

$opensAnalyticsParams = (new OpensAnalyticsParams(100, 101))
                    ->setDomainId('domain_id')
                    ->setTags(['tag']);

$mailersend->analytics->opensByCountry($opensAnalyticsParams);

按用户代理查看打开情况

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\OpensAnalyticsParams;

$mailersend = new MailerSend();

$opensAnalyticsParams = (new OpensAnalyticsParams(100, 101))
                    ->setDomainId('domain_id')
                    ->setTags(['tag']);

$mailersend->analytics->opensByUserAgentName($opensAnalyticsParams);

按阅读环境查看打开情况

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\OpensAnalyticsParams;

$mailersend = new MailerSend();

$opensAnalyticsParams = (new OpensAnalyticsParams(100, 101))
                    ->setDomainId('domain_id')
                    ->setTags(['tag']);

$mailersend->analytics->opensByReadingEnvironment($opensAnalyticsParams);

域名

获取域名列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->domain->getAll($page = 1, $limit = 10, $verified = true);

获取域名

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->domain->find('domain_id');

添加域名

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\DomainParams;

$mailersend = new MailerSend();

$domainParams = (new DomainParams('domainName'))
                    ->setReturnPathSubdomain('returnPath')
                    ->setCustomTrackingSubdomain('customTracking')
                    ->getInboundRoutingSubdomain('inboundRouting');

$mailersend->domain->create($domainParams);

删除域名

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->domain->delete('domain_id');

获取每个域名的收件人列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->domain->recipients($domainId = 'domain_id', $page = 1, $limit = 10);

更新域名设置

您可以设置所需的所有属性,一个或多个。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\DomainSettingsParams;

$mailersend = new MailerSend();

$domainSettingsParam = (new DomainSettingsParams())
                            ->setSendPaused(true)
                            ->setTrackClicks(true)
                            ->setTrackOpens(false)
                            ->setTrackUnsubscribe(false)
                            ->setTrackContent(true)
                            ->setTrackUnsubscribeHtml('html')
                            ->setTrackUnsubscribePlain('plain')
                            ->setCustomTrackingEnabled(true)
                            ->setCustomTrackingSubdomain(false);

$mailersend->domain->domainSettings($domainId = 'domain_id', $domainSettingsParam);

验证域名

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->domain->verify('domain_id');

获取DNS记录

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->domain->getDnsRecords('domain_id');

消息

获取消息列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->messages->get($limit = 100, $page = 3);

获取消息信息

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->messages->find('message_id');

计划消息

获取定时消息列表

use MailerSend\MailerSend;
use \MailerSend\Common\Constants;

$mailersend = new MailerSend();

$mailersend->scheduleMessages->getAll(
    'domain_id',
    Constants::STATUS_SCHEDULED,
    $limit = 100,
    $page = 3
)

获取单个定时消息

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->scheduleMessages->find('message_id');

删除定时消息

use MailerSend\MailerSend;
use \MailerSend\Common\Constants;

$mailersend = new MailerSend();

$mailersend->scheduleMessages->delete('message_id');

令牌

获取所有令牌

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->token->getAll($page = 1, $limit = 10);

查找令牌

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->token->find('token_id'); 

创建令牌

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\TokenParams;

$mailersend = new MailerSend();

$mailersend->token->create(
    new TokenParams('token name', 'domainId', TokenParams::ALL_SCOPES)
);

出于安全原因,我们只允许在创建过程中令牌出现一次。为了查看创建的访问令牌,您可以这样做

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\TokenParams;

$mailersend = new MailerSend();

$response = $mailersend->token->create(
    new TokenParams('token name', 'domainId', TokenParams::ALL_SCOPES)
);

echo $response['body']['data']['accessToken'];

更改令牌名称

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\TokenParams;

$mailersend = new MailerSend();

$mailersend->token->changeName('token_id', 'new name'); 

更新令牌

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\TokenParams;

$mailersend = new MailerSend();

$mailersend->token->update('token_id', TokenParams::STATUS_PAUSE); // PAUSE
$mailersend->token->update('token_id', TokenParams::STATUS_UNPAUSE); // UNPAUSE

删除令牌

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\TokenParams;

$mailersend = new MailerSend();

$mailersend->token->delete('token_id');

收件人

获取收件人列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->recipients->get(null, $limit = 100, $page = 3);
// Or for a specific domain
$mailersend->recipients->get('domain_id', $limit = 100, $page = 3);

获取单个收件人

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->recipients->find('recipient_id');

删除收件人

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->recipients->delete('recipient_id');

将收件人添加到抑制列表

黑名单

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\BlocklistParams;

$mailersend = new MailerSend();

$params = (new BlocklistParams())
    ->setDomainId('domain_id')
    ->setRecipients(['recipient_one', 'recipient_two'])
    ->setPatterns(['pattern_one', 'pattern_two']);

$mailersend->blocklist->create($params);

硬退信

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SuppressionParams;

$mailersend = new MailerSend();

$params = (new SuppressionParams())
    ->setDomainId('domain_id')
    ->setRecipients(['recipient_one', 'recipient_two']);

$mailersend->hardBounce->create($params);

垃圾邮件投诉

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SuppressionParams;

$mailersend = new MailerSend();

$params = (new SuppressionParams())
    ->setDomainId('domain_id')
    ->setRecipients(['recipient_one', 'recipient_two']);

$mailersend->spamComplaint->create($params);

退订

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SuppressionParams;

$mailersend = new MailerSend();

$params = (new SuppressionParams())
    ->setDomainId('domain_id')
    ->setRecipients(['recipient_one', 'recipient_two']);

$mailersend->unsubscribe->create($params);

从抑制列表中删除收件人

黑名单

use MailerSend\MailerSend;

$mailersend = new MailerSend();

// Delete specific instances
$mailersend->blocklist->delete(['id_one', 'id_two']);

// or delete all
$mailersend->blocklist->delete(null, true);

// You can also specify the domain
$mailersend->blocklist->delete(['id'], false, 'domain_id');

硬退信

use MailerSend\MailerSend;

$mailersend = new MailerSend();

// Delete specific instances
$mailersend->hardBounce->delete(['id_one', 'id_two']);

// or delete all
$mailersend->hardBounce->delete(null, true);

// You can also specify the domain
$mailersend->hardBounce->delete(['id'], false, 'domain_id');

垃圾邮件投诉

use MailerSend\MailerSend;

$mailersend = new MailerSend();

// Delete specific instances
$mailersend->spamComplaint->delete(['id_one', 'id_two']);

// or delete all
$mailersend->spamComplaint->delete(null, true);

// You can also specify the domain
$mailersend->spamComplaint->delete(['id'], false, 'domain_id');

退订

use MailerSend\MailerSend;

$mailersend = new MailerSend();

// Delete specific instances
$mailersend->unsubscribe->delete(['id_one', 'id_two']);

// or delete all
$mailersend->unsubscribe->delete(null, true);

// You can also specify the domain
$mailersend->unsubscribe->delete(['id'], false, 'domain_id');

待办列表

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

// Delete specific instances
$mailersend->onHoldList->delete(['id_one', 'id_two']);

// or delete all
$mailersend->onHoldList->delete(null, true);

从抑制列表中获取收件人

黑名单

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->blocklist->getAll('domain_id', 15);

硬退信

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->hardBounce->getAll('domain_id', 15);

垃圾邮件投诉

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->spamComplaint->getAll('domain_id', 15);

退订

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->unsubscribe->getAll('domain_id', 15);

待办列表

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->onHoldList->getAll('domain_id', 15);

Webhooks

获取Webhooks列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->webhooks->get('domain_id');

获取Webhook

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->webhooks->find('webhook_id');

创建Webhook

use MailerSend\Helpers\Builder\WebhookParams;
use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->webhooks->create(
    new WebhookParams('https://webhook_url', 'Webhook name', WebhookParams::ALL_ACTIVITIES, 'domain_id')
);

// Or a disabled webhook

$mailersend->webhooks->create(
    new WebhookParams('https://webhook_url', 'Webhook name', WebhookParams::ALL_ACTIVITIES, 'domain_id', false)
);

更新Webhook

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\WebhookParams;

$mailersend = new MailerSend();

$mailersend->webhooks->update('webhook_id', 'https://webhook_url', 'Webhook name', WebhookParams::ALL_ACTIVITIES);

// Enable webhook
$mailersend->webhooks->update('webhook_id', 'https://webhook_url', 'Webhook name', WebhookParams::ALL_ACTIVITIES, true);

// Disable webhook
$mailersend->webhooks->update('webhook_id', 'https://webhook_url', 'Webhook name', WebhookParams::ALL_ACTIVITIES, false);

删除Webhook

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->webhooks->delete('webhook_id');

如果某些端点目前不可用,请使用cURL和其他可用工具来访问它。 更多信息请参考官方API文档

模板

获取模板列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

// Get all templates of an account
$mailersend->template->getAll();

// Get all templates of a domain
$mailersend->template->getAll('domain_id');

// Get page 2 of templates with 20 records per page
$mailersend->template->getAll('domain_id', 2, 20);

获取单个模板

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->template->find('template_id');

删除模板

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->template->delete('template_id');

电子邮件验证

获取所有电子邮件验证列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->emailVerification->getAll($page = 1, $limit = 10);

获取电子邮件验证列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->emailVerification->find('email_verification_id');

创建电子邮件验证列表

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\EmailVerificationParams;

$mailersend = new MailerSend();

$emailVerificationParams = (new EmailVerificationParams('file.csv'))
    ->setEmailAddresses(['test@mail.com']);

$mailersend->emailVerification->create($emailVerificationParams);

验证电子邮件列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->emailVerification->verify('email_verification_id');

获取电子邮件验证列表结果

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\EmailVerificationParams;

$mailersend = new MailerSend();

$mailersend->emailVerification->getResults(
        $emailVerificationId = 'email_verification_id',
        $page = 1,
        $limit = 10,
        $results = [
            EmailVerificationParams::TYPO,
            EmailVerificationParams::CATCH_ALL,
        ],
    );

短信

发送短信

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsParams;

$mailersend = new MailerSend();

$smsParams = (new SmsParams())
    ->setFrom('+12065550101')
    ->setTo(['+12065550102'])
    ->addRecipient('+12065550103')
    ->setText('Text');
    
$sms = $mailersend->sms->send($smsParams);

个性化

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsParams;

$mailersend = new MailerSend();

$smsParams = (new SmsParams())
    ->setFrom('+12065550101')
    ->setTo(['+12065550102'])
    ->setText('Text {{ var }}')
    ->setPersonalization([
        new SmsPersonalization('+12065550102', [
            'var' => 'variable',
            'number' => 123,
            'object' => [
                'key' => 'object-value'
            ],
            'objectCollection' => [
                [
                    'name' => 'John'
                ],
                [
                    'name' => 'Patrick'
                ]
            ],
        ])
    ]);
    
$sms = $mailersend->sms->send($smsParams);

短信电话号码

获取短信电话号码列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$sms = $mailersend->smsNumber->getAll($page = 1, $limit = 10, $paused = true);

获取单个SMS电话号码

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$sms = $mailersend->smsNumber->find('sms_number_id');

更新单个SMS电话号码

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$sms = $mailersend->smsNumber->update('sms_number_id', $paused = true);

删除SMS电话号码

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$sms = $mailersend->smsNumber->delete('sms_number_id');

SMS消息API

获取SMS消息列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsMessages = $mailersend->smsMessage->getAll($page = 1, $limit = 10);

获取单个SMS消息

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsMessage = $mailersend->smsMessage->find('sms_message_id');

短信活动API

获取SMS活动列表

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsActivityParams;

$mailersend = new MailerSend();

$smsActivityParams = (new SmsActivityParams())
    ->setSmsNumberId('sms_number_id')
    ->setDateFrom(1623073576)
    ->setDateTo(1623074976)
    ->setStatus(['queued'])
    ->setPage(3)
    ->setLimit(15);

$smsActivity = $mailersend->smsActivity->getAll($smsActivityParams);

短信收件人API

获取SMS收件人列表

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsRecipientParams;

$mailersend = new MailerSend();

$smsRecipientParams = (new SmsRecipientParams())
    ->setSmsNumberId('sms_number_id')
    ->setStatus('opt_out')
    ->setPage(3)
    ->setLimit(15);

$smsRecipients = $mailersend->smsRecipient->getAll($smsRecipientParams);

获取单个SMS收件人

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsRecipients = $mailersend->smsRecipient->find('sms_recipient_id');

更新单个SMS收件人

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsRecipients = $mailersend->smsRecipient->update('sms_recipient_id', $status = 'opt_out');

SMS webhooks API

获取SMS webhooks列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsRecipients = $mailersend->smsWebhook->get('sms_number_id');

获取单个SMS webhook

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsRecipients = $mailersend->smsWebhook->find('sms_webhook_id');

创建单个短信Webhook

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsWebhookParams;

$mailersend = new MailerSend();

$smsWebhookParams = (new SmsWebhookParams())
    ->setSmsNumberId('sms_number_id')
    ->setName('Name')
    ->setUrl('https://mailersend.com/sms_webhook')
    ->setEvents(['sms.sent', 'sms.delivered', 'sms.failed'])
    ->setEnabled(false);

$smsRecipients = $mailersend->smsWebhook->create($smsWebhookParams);

更新单个SMS webhook

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsWebhookParams;

$mailersend = new MailerSend();

$smsWebhookParams = (new SmsWebhookParams())
    ->setSmsNumberId('sms_number_id')
    ->setName('Name')
    ->setUrl('https://mailersend.com/sms_webhook')
    ->setEvents(['sms.sent', 'sms.delivered', 'sms.failed'])
    ->setEnabled(false);

$smsRecipients = $mailersend->smsWebhook->update($smsWebhookParams);

SMS入站路由API

获取SMS入站路由列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsRecipients = $mailersend->smsInbound->getAll($smsNumberId = 'sms_number_id', $enabled = true, $page = 3, $limit = 15);

获取单个SMS入站路由

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsRecipients = $mailersend->smsInbound->find('sms_inbound_id');

添加SMS入站路由

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsInbound;
use MailerSend\Helpers\Builder\SmsInboundFilter;

$mailersend = new MailerSend();

$smsInboundParams = (new SmsInbound())
    ->setSmsNumberId('sms_number_id')
    ->setName('Name')
    ->setForwardUrl('https://mailersend.com/inbound_webhook')
    ->setFilter(new SmsInboundFilter($comparer = 'starts-with', $value = 'Stop'))
    ->setEnabled(true);

$smsRecipients = $mailersend->smsInbound->create($smsInboundParams);

更新入站路由

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SmsInbound;
use MailerSend\Helpers\Builder\SmsInboundFilter;

$mailersend = new MailerSend();

$smsInboundParams = (new SmsInbound())
    ->setSmsNumberId('sms_number_id')
    ->setName('Name')
    ->setForwardUrl('https://mailersend.com/inbound_webhook')
    ->setFilter(new SmsInboundFilter($comparer = 'starts-with', $value = 'Stop'))
    ->setEnabled(true);

$smsRecipients = $mailersend->smsInbound->update('sms_inbound_id', $smsInboundParams);

删除入站路由

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$smsRecipients = $mailersend->smsInbound->delete('sms_inbound_id');

发送者身份

获取发送者身份列表

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->senderIdentity->getAll($domainId = 'domainId', $page = 1, $limit = 10);

获取单个发送者身份

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->senderIdentity->find('identityId');

通过电子邮件获取单个发送者身份

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->senderIdentity->findByEmail('email');

添加发送者身份

仅使用类的示例

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SenderIdentity;

$mailersend = new MailerSend();

$mailersend->senderIdentity->create(
    (new SenderIdentity('domainId', 'name', 'email'))
);

使用所有选项的示例

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SenderIdentity;

$mailersend = new MailerSend();

$mailersend->senderIdentity->create(
    (new SenderIdentity('domainId', 'name', 'email'))
        ->setReplyToName("John Doe")
        ->setReplyToEmail("john@test.com"))
        ->setAddNote(true)
        ->setPersonalNote("Hi John, please use this token")
);

更新发送者身份

在“添加发送者身份”中展示的构建Sender Identity对象的示例也适用于此处。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SenderIdentity;

$mailersend = new MailerSend();

$mailersend->senderIdentity->update(
    'identityId',
    (new SenderIdentity('domainId', 'name', 'email'))
        ->setReplyToName("John Doe")
        ->setReplyToEmail("john@test.com"))
        ->setAddNote(true)
        ->setPersonalNote("Hi John, please use this token")
);

通过电子邮件更新发送者身份

在“添加发送者身份”中展示的构建Sender Identity对象的示例也适用于此处。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\SenderIdentity;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->senderIdentity->updateByEmail(
    'identityId',
    (new SenderIdentity('domainId', 'name', 'email'))
        ->setReplyToName("John Doe")
        ->setReplyToEmail("john@test.com"))
        ->setAddNote(true)
        ->setPersonalNote("Hi John, please use this token")
);

删除发送者身份

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->senderIdentity->delete('identityId');

通过电子邮件删除发送者身份

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->senderIdentity->deleteByEmail('email');

SMTP用户

获取SMTP用户列表

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->smtpUser->getAll('domainId', 25);

获取单个SMTP用户

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->smtpUser->find('domainId', 'smtpUserId');

添加SMTP用户

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\UserParams;
use MailerSend\Helpers\Builder\SmtpUserParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->smtpUser->create(
    'domainId',
    (new SmtpUserParams('name'))
        ->setEnabled(false)
);

更新SMTP用户

在“添加SMTP用户”中展示的构建SMTP User对象的示例也适用于此处。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\UserParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->smtpUser->update(
    'domainId',
    'smtpUserId',
    (new SmtpUserParams('New name'))
        ->setEnabled(false)
);

删除SMTP用户

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->smtpUser->delete('domainId', 'smtpUserId');

用户

获取用户列表

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->user->getAll();

获取单个用户

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->user->find('userId');

添加用户

仅使用类的示例

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\UserParams;
use MailerSend\Common\Roles;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->user->create(
    (new UserParams('email', Roles::ADMIN))
);

使用所有选项的示例

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\UserParams;
use MailerSend\Common\Roles;
use MailerSend\Common\Permissions;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->user->create(
    (new UserParams('email', Roles::CUSTOM_USER))
        ->setDomains(['domainId', 'anotherDomainId'])
        ->setTemplates(['templateId', 'anotherTemplateId'])
        ->setPermissions([Permissions::READ_OWN_TEMPLATES])
        ->setRequiresPeriodicPasswordChange(true)
);

更新用户

在“添加用户”中展示的构建User对象的示例也适用于此处。

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\UserParams;
use MailerSend\Common\Roles;
use MailerSend\Common\Permissions;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->user->update(
    'userId',
    (new UserParams())
        ->setRole(Roles::CUSTOM_USER)
        ->setDomains(['domainId', 'anotherDomainId'])
        ->setTemplates(['templateId', 'anotherTemplateId'])
        ->setPermissions([Permissions::READ_OWN_TEMPLATES])
        ->setRequiresPeriodicPasswordChange(true)
);

删除用户

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->user->delete('userId');

<a name="get-a-list-of-invites>

获取邀请列表

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->invite->getAll();

获取单个邀请

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->invite->find('inviteId');

重新发送邀请

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->invite->resend('inviteId');

<a name="cancel-an-invite>

取消邀请

use MailerSend\MailerSend;

$mailersend = new MailerSend(['api_key' => 'key']);

$mailersend->invite->cancel('inviteId');

其他端点

获取API配额

use MailerSend\MailerSend;

$mailersend = new MailerSend();

$mailersend->apiQuota->get();

调试验证错误

use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;
use MailerSend\Exceptions\MailerSendValidationException;
use MailerSend\Exceptions\MailerSendRateLimitException;

$mailersend = new MailerSend();

$recipients = [
    new Recipient('your@client.com', 'Your Client'),
];

$emailParams = (new EmailParams())
    ->setFrom('your@domain.com')
    ->setFromName('Your Name')
    ->setRecipients($recipients)
    ->setSubject('Subject {$var}')
    ->setHtml('This is the html version with a {$var}.')
    ->setText('This is the text versions with a {$var}.');

try{
    $mailersend->email->send($emailParams);
} catch(MailerSendValidationException $e){
    // See src/Exceptions/MailerSendValidationException.php for more more info
    print_r($e->getResponse()->getBody()->getContents());
    print_r($e->getBody());
    print_r($e->getHeaders());
    print_r($e->getErrors());
    print_r($e->getStatusCode());
} catch (MailerSendRateLimitException $e) {
    print_r($e->getHeaders());
    print_r($e->getResponse()->getBody()->getContents());
}

测试

composer test

支持和反馈

如果您发现任何错误,请直接在此GitHub中提交问题。

欢迎您为任何其他编程语言创建SDK。

如果您在使用我们的API或SDK时遇到任何问题,请通过电子邮件info@mailersend.com联系我们的支持。

官方文档位于https://developers.mailersend.com

许可证

MIT许可证(MIT)