我一直在为azure的邮件服务研究很多解决方案,我认为最好的解决方案是使用phpMailer。我已经尝试使用sendgrid API,但我想利用jquery / javascript的Ajax post方法。
我还发现了另一个涉及CURL的解决方案。但我在
上收到错误Dotenv::load(__DIR__);
错误似乎来自sendGrids自己的php文件。
如何在azure上解决任何这些问题。
我正在使用的代码如下:
<?php
require 'vendor/autoload.php';
Dotenv::load(__DIR__);
$sendgrid_apikey = getenv('YOUR_SENDGRID_APIKEY');
$sendgrid = new SendGrid($sendgrid_apikey);
$url = 'https://api.sendgrid.com/';
$pass = $sendgrid_apikey;
$template_id = '<your_template_id>';
$js = array(
'sub' => array(':name' => array('Elmer')),
'filters' => array('templates' => array('settings' => array('enable' => 1, 'template_id' => $template_id)))
);
$params = array(
'to' => "test@example.com",
'toname' => "Example User",
'from' => "you@youremail.com",
'fromname' => "Your Name",
'subject' => "PHP Test",
'text' => "I'm text!",
'html' => "<strong>I'm HTML!</strong>",
'x-smtpapi' => json_encode($js),
);
$request = $url.'api/mail.send.json';
// Generate curl request
$session = curl_init($request);
// Tell PHP not to use SSLv3 (instead opting for TLS)
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $sendgrid_apikey));
// Tell curl to use HTTP POST
curl_setopt ($session, CURLOPT_POST, true);
// Tell curl that this is the body of the POST
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
// Tell curl not to return headers, but do return the response
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// obtain response
$response = curl_exec($session);
curl_close($session);
// print everything out
print_r($response);
?>
祝愿,斯坦纳
答案 0 :(得分:0)
phpMailer
是一个邮件服务器,需要PHP运行时启用SMTP服务器,并且需要启用25端口。遗憾的是,我们无权在Azure Web Apps上执行此操作。
我建议您使用第三方邮件服务器从Azure Web Apps上的应用程序发送电子邮件。在Azure上,您可以轻松使用SendGrid来满足此要求,有关详细信息,请参阅https://azure.microsoft.com/en-us/documentation/articles/store-sendgrid-php-how-to-send-email/。