我遇到了一个脚本问题,我认为这是由于跨域资源问题所致……只是不确定原因。
背景:当传真进来时,我正在使用wordpress REST API v2接收来自Twilio的发帖请求。我正在使用一些PHP处理此请求,然后使用Sendgrid v3 API向自己发送电子邮件。我正在以两种方式测试脚本:通过发送传真和在resttesttest.com(带有一个用于测试REST API IMO的ajax脚本的非常有用的网站)上。
所以...如果我在运行该脚本时将sendgrid附件和base64_encode函数注释掉,则一切正常:
function send_fax( WP_REST_Request $request ) {
require('path/sendgrid-php.php');
$parameters = $request->get_params();
$key1 = 'MediaUrl';
$key2 = 'From';
$key3 = 'FaxSid';
$fax_pdf_url = $parameters[$key1];
$fax_from = $parameters[$key2];
$fax_backup_fetch = $parameters[$key3];
//$fax_pdf_attachment_base64 = base64_encode(file_get_contents($fax_pdf_url));
$date = date('Y-m-d H:i:s');
$email = new \SendGrid\Mail\Mail();
$email->setFrom("email@example.com", "My Fax Server");
$email->setSubject('New fax from ' . $fax_from);
$email->addTo('email@example.com', 'Customer Service');
$email->addContent("text/plain", "We've got a fax.");
$email->addContent('text/html', '<h1>We Have a New Fax!</h1><div>The fax content is contained in the pdf attachment. If there is an issue with the attachment, please find new download link at https://fax.twilio.com/v1/Faxes/' . $fax_backup_fetch . '</div>');
/* $attachment = new Attachment();
$attachment->setContent($fax_pdf_attachment_base64);
$attachment->setType('application/pdf');
$attachment->setFilename('test.pdf');
$attachment->setDisposition("attachment");
$email->addAttachment($attachment);
*/
$sendgrid = new \SendGrid('My_API_KEY');
try {
$response = $sendgrid->send($email);
print $response->statusCode() . "\n";
print_r($response->headers());
print $response->body() . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
add_action( 'rest_api_init', function () {
register_rest_route( 'path/v2', '/path/', array(
'methods' => 'POST',
'callback' => 'send_fax'
) );
} );
我收到一封电子邮件,说我收到了传真,其中包含指向传真等信息的链接...只是没有传输的pdf副本。但是,一旦取消注释附件部分(和base64_encode变量)的注释,就不会发送传真。
我已经使用示例pdf在我的网站上测试了base64编码,并且工作正常。唯一的问题是,当我取消注释该脚本时,我没有收到来自Twilio的电子邮件。如果我在resttesttest.com上运行,则在控制台中会收到跨域警告。如果不存在附件或base64_encode函数,它将触发跨域问题吗?仍在学习...越来越好...但是这已经被困住了。