2016-10-18 2 views
2

저는 SendGrid의 PHP API를 사용하여 웹 페이지에 대한 전자 메일을 설정하려고했지만 행운이 없습니다. 저는 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');