2016-10-18 7 views
2

Я пытаюсь настроить электронную почту для веб-страницы с помощью API-интерфейсов SendGrid, и мне не повезло. Я пробовал их код с веб-сайта Azure, а также различные примеры, которые я нашел при попытке Google, и каждый раз, когда он ничего не возвращает в ответ, и письмо не задано. Вот код, я говорю:Как отправить электронное письмо с помощью 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); 
?> 

Стоит также отметить, что я попытался с помощью sendgrid-PHP в сопровождении с кодом поставляемого вместе с ним, и что заставляет страницу просто не загружается. Сейчас я очень расстроен, и любая помощь очень ценится.

+1

Когда я запускаю ваш код как есть (включая фиктивный пользователь/пропуск), я получаю ответ. –

+0

Это может помочь: http://stackoverflow.com/questions/4477535/curl-init-function-not-working – Katie

+0

Я проверил с помощью phpinfo(), и он говорит, что поддержка завитка включена. –

ответ

1

По умолчанию Azure не создает сертификат одноранговой сети SSL для Azure Web Apps. Если вы добавите код в свой тестовый код $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

Nevermind. У меня была опечатка в письме, которое я использовал. Работает. Еще раз спасибо. –

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'); 

 Смежные вопросы

  • Нет связанных вопросов^_^