2016-10-18 16 views
2

私はSendGridのPHP APIを使用してWebページの電子メールを設定しようとしています。私はAzureのウェブサイトからコードを試しただけでなく、Googleに試している間に見つけたさまざまな例を試してきました。応答として何も返さず、電子メールが設定されていないときはいつも。ここで私が話しているコードです:それはまた、私はそれに付属のコードを伴うsendgrid-PHPを使用して試したことは注目に値するSendGridを使用して電子メールを送信する方法

<?php 
$url = 'https://api.sendgrid.com/'; 
$user = 'USERNAME'; 
$pass = 'PASSWORD'; 

$params = array(
     'api_user' => $user, 
     'api_key' => $pass, 
     'to' => '[email protected]', 
     'subject' => 'testing from curl', 
     'html' => 'testing body', 
     'text' => 'testing body', 
     'from' => '[email protected]', 
    ); 

$request = $url.'api/mail.send.json'; 

// Generate curl request 
$session = curl_init($request); 

// 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); 
?> 

は、それは単純にロードしないようにページを引き起こします。私は今、本当に困っています。どんな助けも大歓迎です。

+1

コードをそのまま(ダミーのユーザー/パスを含む)実行すると、私は応答を得ます。 –

+0

これは役に立つかもしれません:http://stackoverflow.com/questions/4477535/curl-init-function-not-working – Katie

+0

私はphpinfo()を使用してチェックし、カールサポートが有効であると言います。 –

答えて

1

デフォルトでは、AzureはAzure Web AppsのSSLピア証明書を生成しません。テストコード$error = curl_error($session);にコードを追加すると、エラーSSL certificate problem: self signed certificate in certificate chainが返されます。

コードcurl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);を追加するだけで検証をバイパスすることができます。

その他の場合は、Verify Peer Certificate from PHP cURL for Azure Appsに従うと、Azure Web Appsで証明書を追加できます。

+0

ありがとうございます。検証をバイパスするためにあなたが提供したコードを使用しましたが、今では応答が得られます。それは今、応答を与えている、そしてそれは成功だと言うが、電子メールは到着していない。それがなぜなのか? –

+0

心配しないでください。私は使用していた電子メールにタイプミスがありました。それは働いている。ありがとうございました。 –

0

あなたのバージョンのcURLは、そのままの状態でSSLをサポートしていない可能性があります。

あなたはあなたのコードの先頭に次のように置くことによってこれをテストすることができます

if (!curl_version()['features'] & CURL_VERSION_SSL) { 
    echo "SSL is not supported with this cURL installation."; 
} 

それはあなたがこのようにそれを手動で設定する必要が箱から出してサポートされていない場合:

curl_setopt($session, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($session, CURLOPT_SSL_VERIFYHOST, 2); 
// path to CA certificate 
curl_setopt($session, CURLOPT_CAINFO, '/etc/openssl/cert.pem'); 
関連する問題