base64_encode和电子邮件附件的跨域问题

时间:2018-07-27 23:27:58

标签: base64 cross-domain twilio sendgrid-api-v3

我遇到了一个脚本问题,我认为这是由于跨域资源问题所致……只是不确定原因。

背景:当传真进来时,我正在使用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函数,它将触发跨域问题吗?仍在学习...越来越好...但是这已经被困住了。

0 个答案:

没有答案