2015-10-06 78 views
2

我使用发送网格发送邮件。 这是我使用的脚本。使用发送网格API密钥发送邮件

$url = 'https://api.sendgrid.com/'; 
$params = array(
    'api_user' => 'xxx', // My send grid username 
    'api_key' => xxx', // My send grid password 
    'to'  => tomail,  
    'subject' => 'sub', 
    'html'  => 'message', 
    'from'  => frommail, 
); 

$request = $url.'api/mail.send.json'; 
$session = curl_init($request); 
curl_setopt ($session, CURLOPT_POST, true); 
curl_setopt ($session, CURLOPT_POSTFIELDS, $params); 
curl_setopt($session, CURLOPT_HEADER, false); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($session); 
curl_close($session); 

它工作正常并成功发送邮件。

我不想使用发送网格api键发送邮件而不使用密码。 我从'app.sendgrid.com/settings/api_keys'生成了它的API密钥和长密钥。

如何从web api调用中使用此键。我将用新生成的api key namekey替换api_userapi_key s,但邮件不发送。

+0

我建议使用这个https://github.com/sendgrid/sendgrid-php。您可以使用'composer'轻松地将其安装到“Usage”部分,您将找到如何使用api键进行实例化。 –

+0

它使用发送php库,我不使用这个。我只使用卷曲。 – Gowri

+0

好的,那么为什么不使用这个库呢 - 它看起来比所有那些原始卷曲函数更容易处理。 – Simba

回答

0

我使用发送网格php库,我可以使用用户名和密码或只是API密钥。

尝试删除api_user行并使用带有api_key的api密钥。它应该工作。

欲了解更多信息:https://sendgrid.com/docs/Integrate/Code_Examples/php.html

+0

试过这个,但没有收到邮件到我的收件箱/垃圾邮件。 – Gowri

+0

检查你是否有重叠变量。例如,我有2个$ EMAIL集(1个用于电子邮件地址,另一个用于sendgrid) –

3

要拥有API密钥的发送,你需要一个Authorization头添加到您的请求。它是一个HTTP基本验证标头,意思是它的格式为username:password,base64编码,作为载体令牌。您可以在文档中输入see an example

4

我今天也遇到过这个。要添加到@bwest提供了答案:

$pass = 'your api token' // not the key, but the token 

$url = 'https://api.sendgrid.com/'; 

//remove the user and password params - no longer needed 
$params = array(
    'to'  => tomail,  
    'subject' => 'sub', 
    'html'  => 'message', 
    'from'  => frommail, 
); 

$request = $url.'api/mail.send.json'; 
$headr = array(); 
// set authorization header 
$headr[] = 'Authorization: Bearer '.$pass; 

$session = curl_init($request); 
curl_setopt ($session, CURLOPT_POST, true); 
curl_setopt ($session, CURLOPT_POSTFIELDS, $params); 
curl_setopt($session, CURLOPT_HEADER, false); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 

// add authorization header 
curl_setopt($session, CURLOPT_HTTPHEADER,$headr); 

$response = curl_exec($session); 
curl_close($session); 
0

使用与Autorization: Bearer key头作品的API密钥。