首页 > 解决方案 > 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 可以实现这一点,但这会给我带来其他问题,目前对我来说不是一个选择。

标签: phpcurl

解决方案


我找到了解决问题的方法。您可以通过预先附加 fwrite() 函数的第二个参数来为电子邮件添加主题(标题),如下所示:

$subject = "email title";
fwrite($emailFile, "Subject: " . $subject . "\n" . $message);

但是,正如其他人所建议的那样,如果可以,最好使用更现代的库,如 SwiftMailer 或 PHP Mailer 来实现此功能,因为 CURLOPT_PUT 已被弃用。


推荐阅读