php - PHP - 如何使用 CURLOPT_PUT 设置电子邮件标题?
问题描述
我正在做一个实现电子邮件功能的 cron 工作。它本质上是发送电子邮件报告。
我可以使用 CURLOPT_PUT 发送一封电子邮件,如下所示:
//create email body etc
$to = 'dennis.kozevnikoff@outlook.com';
$server = 'smtps://smtp.gmail.com:465';
$message = 'test message';
$emailFile = fopen("php://temp", 'w+');
fwrite($emailFile, $message);
rewind($emailFile);
$fstat = fstat($emailFile);
$size = $fstat['size'];
//initialize and authenticate cURL
$ch = curl_init($server);
curl_setopt($ch, CURLOPT_USERPWD, 'd.kozevnikoff@outlook.com' . ':' . 'samplepass');
curl_setopt($ch, CURLOPT_MAIL_RCPT, array("<" . $to . ">"));
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_INFILE, $emailFile);
curl_setopt($ch, CURLOPT_INFILESIZE, $size);
fclose($emailFile);
curl_close($ch);
问题是我无法设置电子邮件的标题(又名主题),它以“无主题”的形式出现。是否可以使用我当前的设置完成此操作,如果可以,我该如何实现?
我知道 CURLOPT_POST 可以实现这一点,但这会给我带来其他问题,目前对我来说不是一个选择。
解决方案
我找到了解决问题的方法。您可以通过预先附加 fwrite() 函数的第二个参数来为电子邮件添加主题(标题),如下所示:
$subject = "email title";
fwrite($emailFile, "Subject: " . $subject . "\n" . $message);
但是,正如其他人所建议的那样,如果可以,最好使用更现代的库,如 SwiftMailer 或 PHP Mailer 来实现此功能,因为 CURLOPT_PUT 已被弃用。
推荐阅读
- listview - ListView中如何控制编辑控件的位置
- c# - C# 不可调用成员“ProdhimiQumështit.DataTabel”不能像方法一样使用
- cypress - cypress-cucumber - 将值从一步定义传递到另一步定义
- c# - .net 核心中间件创建中 next(context) 与 await next.Invoke(context) 之间的区别
- c# - 向数组添加元素有效,但未显示在其他 switch 语句中
- html - Knockout js:有条件地绑定title属性
- javascript - 如何在 Vuejs 嵌套条件语句中选中一个框
- django - 导入额外库时,用于 python 单元测试的 Visual Studio 代码调试工具不显示调试工具
- alwayson - 两个集群组之间的读取规模副本
- java - Java/Kotlin 的虚拟环境