PHP集成MailerSend API调用无响应不发邮件且无报错如何解决
排查与修复方案
核心问题排查
你当前代码最常见的出错点是setFrom参数错误:该方法需要传入完整的发件人邮箱地址(例如service@xxx.com),仅传入发送域名会直接导致请求非法,接口直接拒绝处理。
通用排查步骤
- 开启PHP错误显示,在脚本最顶部添加配置,输出所有PHP层面的报错:
error_reporting(E_ALL); ini_set('display_errors', 1);
- 用try-catch包裹API调用逻辑,捕获SDK抛出的异常,获取具体的错误信息
- 校验配置项有效性:API密钥是否和后台生成的一致、发件域名是否已经完成DNS验证、收件人邮箱状态正常
- 确认服务器网络无拦截:可手动执行
curl https://api.mailersend.com确认服务器可以正常访问MailerSend接口 - 纯文本正文不要留空,可降低邮件被标记为垃圾邮件的概率
修正后的参考代码
<?php // 开启全局错误显示 error_reporting(E_ALL); ini_set('display_errors', 1); use MailerSend\MailerSend; use MailerSend\Helpers\Builder\Recipient; use MailerSend\Helpers\Builder\EmailParams; use Http\Client\Exception as HttpClientException; include('settings.php'); try { $mailersend = new MailerSend(['api_key' => $mailing_api]); $recipients = [ new Recipient('recipient@email.com', 'recipient_name'), ]; $emailParams = (new EmailParams()) // 替换为完整的发件人邮箱,不要仅填域名 ->setFrom('noreply@' . $mailing_sending_domain) ->setFromName($mailing_from_name_users) ->setRecipients($recipients) ->setSubject('测试消息') ->setHtml('<p>测试消息</p>') ->setText('测试消息纯文本内容'); $response = $mailersend->email->send($emailParams); // 打印正常返回结果 var_dump($response); } catch (HttpClientException $e) { // 输出HTTP请求相关错误 echo '接口请求错误:' . $e->getMessage() . PHP_EOL; // 输出接口返回的详细错误内容 if ($e->hasResponse()) { echo '接口返回详情:' . $e->getResponse()->getBody()->getContents() . PHP_EOL; } } catch (Exception $e) { // 输出其他通用错误 echo '通用错误:' . $e->getMessage() . PHP_EOL; }
内容的提问来源于stack exchange,提问作者user14807024
相关产品推荐
相关产品推荐

