You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SendGrid API更新后,如何用CURL发送自定义HTML邮件?

解决SendGrid API通过CURL发送自定义HTML邮件的问题

你当前代码的核心问题有两个:一是保留了SendGrid模板配置,会覆盖自定义HTML;二是获取HTML内容的方式有误(若目标文件含PHP逻辑)。以下是具体修改步骤:

1. 移除模板相关配置

删除所有和$template_id、$js数组以及x-smtpapi参数相关的代码——这部分用于调用SendGrid官方模板,会优先覆盖你传入的自定义HTML内容。

2. 正确获取自定义HTML内容

如果custom/WelcomeHTML.php包含PHP动态逻辑,file_get_contents()只会读取文件源码,不会执行PHP。改用输出缓冲捕获执行后的HTML:

ob_start();
include 'custom/WelcomeHTML.php';
$Content = ob_get_clean();

修改后的完整代码

$url = 'https://api.sendgrid.com/'; 
$pass = "MY-API-KEY"; 

// 正确获取执行后的HTML内容
ob_start();
include 'custom/WelcomeHTML.php';
$Content = ob_get_clean();

$params = array(
    'to'        => "email@gmail.com", 
    'toname'    => "First Last Name",
    'from'      => "From@gmail.com",
    'fromname'  => "From Name",
    'subject'   => " LIVE EVENT", 
    'text'      => "Hoping this one works",
    'html'      => $Content
);

$request =  $url.'api/mail.send.json';
$session = curl_init($request);
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $pass));
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
print_r($response);

额外说明

  • 若WelcomeHTML.php是纯静态HTML文件,file_get_contents()可正常使用,但建议保留输出缓冲方式,兼容未来可能的动态逻辑修改。
  • 可先通过echo $Content验证获取到的HTML内容是否符合预期,排查路径或文件本身的问题。

内容的提问来源于stack exchange,提问作者Papa De Beau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:05:33