我正在使用 Mailtrap 的 SMTP 将我的开发/测试电子邮件发送到假收件箱。
他们的 SMTP 服务器功能运行良好,但我现在正在尝试实现他们的 API v2。
每次到达
https://send.api.mailtrap.io/api/send
端点时,我都会不断收到以下错误:
{“错误”:[“未经授权”]}
更多信息
send.api.mailtrap.io/api/send
端点出现故障,其他端点(例如 mailtrap.io/accounts
)正在工作使用了 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";
我终于找到了答案,以下是我的结论:
自今天(2022 年 9 月)起,Mailtrap 的发送 API 无法用于将电子邮件发送到您的 Mailtrap Sandbox(即假收件箱)。它只能用于向真实用户发送真实/生产电子邮件。
如果您的 Mailtrap 帐户超过一年,您很可能会错过帐户中的“发送 API”部分,而只能看到“API”部分。解决这个问题的唯一解决方案是创建一个新帐户。
如果您仍计划使用 Mailtrap 的发送 API(发送生产电子邮件),您将需要联系支持人员进行一些预配置(文档中未提及),否则您将收到来自“禁止”的信息API,没有任何其他详细信息。
我已经研究过这个问题,并找到了解决您问题的方法。
查看发送文档时,它指出您还必须在网址中包含收件箱 ID,并使用沙箱网址。
所以,如果您将网址从
https://send.api.mailtrap.io/api/send
更改为 https://sandbox.api.mailtrap.io/api/send/1234567
那么它应该可以工作 - 至少对我来说是这样!
您可以通过访问网页界面中的特定收件箱并从网址复制来获取收件箱 ID。