如何在sendgrid中添加标题?

2023-12-23

我正在尝试使用 php 和 sendgrid 在 Outlook 上发送日历邀请。所以我需要创建一个 ics 文件,这不是问题。问题是我需要设置标题。 Gmail 会将 ics 文件识别为日历邀请,但 Outlook 不会。这是我想出的完整代码,但我不会这样做。请帮忙。我搜索了每个博客以了解如何在 sendgrid 中添加标题(例如内容类型和内容处置),但无济于事。

<html>
<head>
    <title>PHP Test</title>
</head>
<body>

<?php

include("/Users/aaa/Downloads/sendgrid-php/sendgrid-php.php");
include('/Users/aaa/Downloads//smtpapi-php/smtpapi-php.php');


$sendgrid = new SendGrid("uname", "pass");
$email    = new SendGrid\Email();

$ical = "
Content-Type: text/calendar;method=request
MIME-Version: 1.0
BEGIN:VCALENDAR
METHOD:REQUEST
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@time.co
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:20150429T170000Z
DTEND:20150429T035959Z
SUMMARY:New event has been added
END:VEVENT
END:VCALENDAR";

$filename = "invite.ics";
$file = fopen($filename, 'w');
fwrite($file, $ical);
fclose($file);


$email->addTo("[email protected] /cdn-cgi/l/email-protection")
    ->setFrom("[email protected] /cdn-cgi/l/email-protection")
    ->setSubject("Subject")
    ->setAttachment($filename)
    ->addHeader('Content-Type', 'multipart/alternative')
    ->addHeader('Content-Disposition', 'inline');

$sendgrid->send($email);

var_dump($sendgrid);

try {
    $sendgrid->send($email);
} catch(\SendGrid\Exception $e) {
    echo $e->getCode();
    foreach($e->getErrors() as $er) {
        echo $er;
    }
}

?>

</body>
</html>

不幸的是,这是当前 Web 端点的限制。对于此用例,您需要通过 SMTP 而不是 HTTP 发送。使用smtpapi-php库来构建您的 X-SMTPAPI 标头(如果您正在使用它们)。然后使用您选择的库构建 SMTP 消息,添加自定义标头(如果需要,包括 X-SMTPAPI),然后发送。

使用 Swift Mailer 作为 SMTP 传输的示例 https://github.com/sendgrid/smtpapi-php#sendgrid-smtp-example

use Smtpapi\Header;

$transport = \Swift_SmtpTransport::newInstance('smtp.sendgrid.net', 587);
$transport->setUsername('sendgrid_username');
$transport->setPassword('sendgrid_password');

$mailer = \Swift_Mailer::newInstance($transport);

$message = new \Swift_Message();
$message->setTos(array('[email protected] /cdn-cgi/l/email-protection'));
$message->setFrom('[email protected] /cdn-cgi/l/email-protection');
$message->setSubject('Hello');
$message->setBody('%how% are you doing?');

$header = new Header();
$header->addSubstitution('%how%', array('Owl'));

$message_headers = $message->getHeaders();
$message_headers->addTextHeader(HEADER::NAME, $header->jsonString());

try {
    $response = $mailer->send($message);
    print_r($response);
} catch(\Swift_TransportException $e) {
    print_r('Bad username / password');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在sendgrid中添加标题? 的相关文章

  • IMAP 和 PHP - 从已发送文件夹和收件箱文件夹中获取所有电子邮件

    我正在尝试获取接收和发送的所有电子邮件 并使用 PHP 将其写入 mySQL 数据库 我使用的主机名是 hostname imap gmail com 993 imap ssl INBOX 它仅引用收件箱 并成功抓取收到的电子邮件 为了抓取
  • Laravel 5:在控制台内核的 Schedule() 函数中使用 Cache:: 或 DB::

    我正在尝试以不同的用户配置的时间间隔在 Laravel 5 中运行 Artisan 控制台命令 我已经构建了控制台命令 并拥有一个包含 运行频率 配置值的数据库 具有 Eloquent 模型 内schedule 的函数App Console
  • 动态重新定义 PHP 类函数?

    我试图弄清楚如何动态导入大量 PHP 类函数 例如 class Entity public function construct type require once type functions php person new Entity
  • 在 JAX-WS 中使用安全性的最佳实践是什么

    这是场景 我有一些需要保护的 Web 服务 JAX WS 目前 为了身份验证需求 我提供了额外的 SecurityWService 它为授权用户提供了一些需要在请求其他服务时描述的 userid 和 sessionid 使用一些java安全
  • php / phpDoc - @return $this 类的实例?

    如何在 phpDoc 中将方法标记为 返回当前类的实例 在下面的示例中 我的 IDE Netbeans 将看到 setSomething 始终返回foo object 但如果我扩展对象 情况就不是这样了 它会返回 this 在第二个示例中是
  • 测试 CodeIgniter 会话变量的正确方法是什么?

    获取以下代码片段 测试确保会话变量不为空的最佳方法是什么 如果稍后在我的脚本中 我调用以下内容 第一个打印正确 但在第二个我收到消息 未定义的变量 已登录 我尝试过使用 empty and isset 但两者均未成功 我还尝试使用向后执行
  • 根据product_id获取magento产品的浏览次数

    我想在 Magento 的类别列表页面上显示查看计数 这些数据看起来过去可以通过 reports product collection 访问 但我找不到正确访问它的方法 我基本上想提供一个产品 ID 并获取返回给我的所述产品的观看次数 您可
  • 通过 PEAR 安装 PHPUnit

    我安装时遇到问题PHPUnit 3 4 6 via 梨1 9 0 当我发现频道后pear phpunit de并尝试使用以下命令之一 pear 安装 phpunit PHPUnit pear 安装 alldeps phpunit PHPUn
  • 统计数据库中的注册用户数

    我想反映在我的网站上注册的人数 只有我拥有的代码不起作用 它让我知道它不可能 转换为字符串 另外 当我将其设置为在 HTML 中调用的函数时 我收到 connection 未定义的错误 require once connect php sq
  • Symfony/Form:函数 DoctrineType::__construct() 的参数太少

    我有一个奇怪的错误 我在自己的系统中实现了 Form 组件 我在那里创建了一个 FormType 其中使用 EntityType 作为字段 每次我想用 formBuilder 创建表单时 它都会抛出以下错误 Fatal error Unca
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 如何通过开始索引和结束索引提取子字符串?

    str HelloWorld sub substr str 3 5 echo sub prints loWor 我知道 substr 采用第一个参数 第二个参数是开始索引 而第三个参数是要提取的子字符串长度 我需要的是通过提取子字符串起始索
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 多维数组 PHP 内爆 [重复]

    这个问题在这里已经有答案了 就我的数据结构而言 我有一个 communications 数组 每个 communications id 本身包含三部分信息 id score 和 content 我想内爆这个数组以获得逗号分隔的 id 列表
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求

随机推荐

  • 如何在 Windows 7 上设置 SMTP 服务器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 反射类型加载异常

    当我尝试构建 My WF 项目时 出现此错误 我发现删除System Activities Presentation解决了这个错误 如果我在运行时收到此错误 我可以进行调查LoaderExceptions找出根本问题 当我在编译时收到此错误
  • 在谷歌地图上显示/隐藏圆圈 javascript api

    尝试在用户将鼠标悬停在谷歌地图上时显示它 并在鼠标移开时隐藏它 此代码适用于在鼠标移开时隐藏圆圈 但不会在鼠标悬停时重新显示圆圈 我还尝试过circle setMap null 然后尝试circle setMap map 这就是我将地图作为
  • 初始化链接结构节点

    我应该做什么来分配内存空间pNode gt data 我想在其中放入一个字符 例如pNode gt data c 但它表明分段故障和内存地址pNode gt data is 0x1这是超出范围的 下面是我的代码 typedef struct
  • 本地代码的调试

    我有一个 C 服务 它正在调用最初用 VC6 编写的 C DLL 我正在尝试检查 DLL 中存在一个错误 在经历了一场试图让调试工作的噩梦之后 我最终将 dll 添加到包含 C 服务的 VS2005 解决方案中 并添加了必要的 CRT SE
  • 找不到记录器“xhtml2pdf”的处理程序

    我正在使用 xhtmltopdf pisa 从 html 模板生成 pdf 该代码运行良好 pdf pisa pisaDocument StringIO StringIO html encode UTF 8 dest result link
  • vue.js 获取 App.vue 中的路由名称

    我使用 vue cli 和 webpack 来构建 vue 项目 然后我安装了 vue meta info 来设置 seo 我想使用模板和路线名称设置页面标题 但是 我无法获取路由器中的变量 路由器 index js import Vue
  • 反转 Python 字符串而不省略开始和结束切片

    如何反转 Python 字符串而不省略开始和结束切片参数 word hello reversed word word 1 我知道这是可行的 但是如何通过指定开始和结束索引来获得结果 word hello reversed word word
  • float INFINITY 可以通过 NSCoder 存档,但不能取消存档

    我必须存档一个float有价值INFINITY 然后再将其解档 这是我的示例代码 归档对象 interface CodeInf NSObject
  • 收听 JSF-SEAM 阶段的“官方”SEAM 方式是什么?

    关于标题的一个简单问题 我的情况是 我想监听 RENDER RESPONSE 之前 阶段 并更改一些组件的内部状态 PhaseListener 是在 SEAM 应用程序中执行此操作的 正确方法 吗 如果你想改变JSF组件内部状态 依赖JSF
  • laravel 5.4 上传图片

    我在 laravel 5 4 中上传文件的控制器代码 if request gt hasFile input img if request gt file input img gt isValid try file request gt f
  • 关于模拟系统调用的建议

    我有一堂课叫获取地址信息 http www opengroup org onlinepubs 000095399 functions getaddrinfo html用于 DNS 查找 在测试过程中 我想模拟涉及此系统调用的各种错误情况 模
  • 每个用户的静态对象是唯一的吗?

    我有一个 net 应用程序 c 它是这样的 public partial class Default System Web UI Page region initial variables setup private static exam
  • Azure 表通过 rowkey 作为条件进行查询

    使用查询通过 rowkey 获取记录有多好 仅检查行键的查询是否有意义 我知道您可以组合primarykey rowkey并获取特定记录 或者然后通过特定分区键获取所有记录 因此所有相关数据将快速返回 我猜想 如果您进行查找 rowkey
  • 在 SQL 中使用“=”或 LIKE 比较字符串?

    如果您应该使用 LIKE 或 来比较 SQL 语句中的字符串 则存在 几乎是宗教性的 讨论 有理由使用 LIKE 吗 有理由使用 吗 表现 可读性 LIKE并且相等运算符有不同的目的 它们不做同样的事情 速度要快得多 而LIKE可以解释通配
  • 在多个管道服务器实例的情况下,异步名为pipes

    我正在使用来自的代码本文 http www codeproject com Tips 492231 Csharp Async Named Pipes唯一的区别是最大服务器实例数被设定为 1 具有相同管道名称的服务器实例数量仅受系统资源限制
  • 如何使用 API Server 重新启动 Kubernetes 部署

    我们可以使用 kubectl rollout restart 重新启动 kubernetes 部署 我想使用 kubernetes api 服务器执行相同的操作 您可以使用此 Curl 来重新使用 API curl location req
  • Phonegap:存储数据的最简单方法/Phonegap参考

    我正在寻找以下信息 完整的 Phonegap 参考 在他们的网站上找不到 在 Phonegap 中实现数据库的最简单方法是什么 2015年更新 下面的答案非常过时 因为它最近得到了赞成票 我想我最好重新解决它 科尔多瓦文档 http cor
  • 如何使用 Pandas 编写分区的 Parquet 文件

    我正在尝试将 Pandas 数据帧写入分区文件 df to parquet output parquet engine pyarrow partition cols partone partwo TypeError cinit got an
  • 如何在sendgrid中添加标题?

    我正在尝试使用 php 和 sendgrid 在 Outlook 上发送日历邀请 所以我需要创建一个 ics 文件 这不是问题 问题是我需要设置标题 Gmail 会将 ics 文件识别为日历邀请 但 Outlook 不会 这是我想出的完整代