Mailtrap API - 无法发送电子邮件 - “未经授权”API 错误

问题描述 投票:0回答:2

我正在使用 Mailtrap 的 SMTP 将我的开发/测试电子邮件发送到假收件箱。

他们的 SMTP 服务器功能运行良好,但我现在正在尝试实现他们的 API v2

每次到达

https://send.api.mailtrap.io/api/send
端点时,我都会不断收到以下错误:

{“错误”:[“未经授权”]}

更多信息

  • 我有一个付费帐户并生成了一个具有完整管理员权限的 API 令牌
  • 只有
    send.api.mailtrap.io/api/send
    端点出现故障,其他端点(例如
    mailtrap.io/accounts
    )正在工作
  • 无论我使用他们的 API Doc Request 测试工具还是我的代码,我都会遇到相同的错误
  • 我在他们的 API v1 中收到相同的错误消息

使用了 cURL 请求(来自他们的 API 文档)

curl -X POST "https://send.api.mailtrap.io/api/send" \
 -H "Accept: application/json" \
 -H "Api-Token: xxxxxxxxxxxxxxxxxxxxxxxxx" \
 -H "Content-Type: application/json" \
 -d '{"to":[{"email":"[email protected]","name":"John Doe"}],"from":{"email":"[email protected]","name":"Example Sales Team"},"subject":"Your Example Order Confirmation","html":"<p>Congratulations on your order no. <strong>1234</strong>.</p>"}'

通过 PHP 进行类似的 cURL 请求(相同的错误消息)

<?php

$post = [];
$post['to'] = '[email protected]';
$post['from'] = ['name' => 'Test', 'email' => '[email protected]'];
$post['subject'] = 'Test';
$post['html'] = '<h2>This is a test</h2><p>It works!</p>';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://send.api.mailtrap.io/api/send');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Api-Token: xxxxxxxxxxxxxxxxxxxxxxxxx']);
$result = curl_exec($ch);

print_r($result);
echo "\n";
smtp mailtrap
2个回答
3
投票

我终于找到了答案,以下是我的结论:

  • 自今天(2022 年 9 月)起,Mailtrap 的发送 API 无法用于将电子邮件发送到您的 Mailtrap Sandbox(即假收件箱)。它只能用于向真实用户发送真实/生产电子邮件。

  • 如果您的 Mailtrap 帐户超过一年,您很可能会错过帐户中的“发送 API”部分,而只能看到“API”部分。解决这个问题的唯一解决方案是创建一个新帐户。

  • 如果您仍计划使用 Mailtrap 的发送 API(发送生产电子邮件),您将需要联系支持人员进行一些预配置(文档中未提及),否则您将收到来自“禁止”的信息API,没有任何其他详细信息。


2
投票

我已经研究过这个问题,并找到了解决您问题的方法。

查看发送文档时,它指出您还必须在网址中包含收件箱 ID,并使用沙箱网址。

所以,如果您将网址从

https://send.api.mailtrap.io/api/send
更改为
https://sandbox.api.mailtrap.io/api/send/1234567
那么它应该可以工作 - 至少对我来说是这样!

您可以通过访问网页界面中的特定收件箱并从网址复制来获取收件箱 ID。

© www.soinside.com 2019 - 2024. All rights reserved.