2016-12-05 5 views
2

Somthing делает меня сумасшедшим, я использую Sendgrid для отправки электронных писем, и я хотел бы отправлять электронные письма на PHP с вариантами text/plain и text/html.Sendgrid: Как использовать mimepart со своим PHP Api

Что я пробовал:

Я проанализировал письмо с 2 типа контента. Я вижу:

---- == _ mimepart_35656456787

Content-Type: Текст/равнину; кодировка = UTF-8

[обычная текстовая версия ....]

---- == _ mimepart_67868876878

Content-Type: Текст/html; кодировка = UTF-8

[HTML версия ....]

Затем я попытался добавить эти 2 варианта, как это:

... 
$from = new SendGrid\Email(null, $from); 
$email = new SendGrid\Email(null, $to); 
$content = new SendGrid\Content("text/plain",$body_plain); 
$content1 = new SendGrid\Content("text/html",$body_html); 

$mail = new SendGrid\Mail($from, $subject, $email, $content1, $content); 

Результат:

Здесь является то, что я получаю:

---- == _ 35656456787

Content-Type: text/plain; кодировка = UTF-8

[обычная текстовая версия ....]

---- == _ 67868876878

Content-Type: Текст/html; кодировка = UTF-8

[HTML версия ....]

mimepart отсутствует.

Sendgrid также совет (здесь: https://sendgrid.com/docs/Classroom/Build/Format_Content/html_formatting_issues.html) для отправки электронной почты с использованием как простых, так и html-вариантов. Так что это, вероятно, возможно ...

Но я пытался найти, как сделать это, и я не нашел sthg ..

Вопрос: У кого есть такая же проблема? как отправлять электронные письма, используя как plain, так и html?

Любая идея?

ответ

0

Я проверил исходный код и обнаружил, что функция E-mail() принимает только 4 аргумента,

public function __construct($from, $subject, $to, $content) 

так что ваш код

$mail = new SendGrid\Mail($from, $subject, $email, $content1, $content); 

не должны работать.

Вы можете отправить как HTML и обычный текст без использования вспомогательного класса:

// If you are using Composer (recommended) 
require 'vendor/autoload.php'; 

// If you are not using Composer 
// require("path/to/sendgrid-php/sendgrid-php.php"); 
$to_email="recepi[email protected]"; 
$to_name="John Smith"; 
$subject="Testing sendgrid. See you in spam folder!"; 
$html="and easy to do anywhere, even with PHP<a href='https://someurl.com'>Really</a>"; 
$text="and easy to do anywhere, even with PHP"; 


$json=<<<JSON 
{ 
    "personalizations": [ 
    { 
     "to": [ 
     { 
      "email": "$to_email", 
      "name": "$to_name" 
     } 
     ], 
     "subject": "$subject" 
    } 
    ], 
    "from": { 
    "email": "[email protected]", 
    "name": "Your Name" 
    }, 
    "content": [ 
    { 
     "type": "text/plain", 
     "value": "$text" 
    }, 
    { 
     "type": "text/html", 
     "value": "$html" 
    } 
    ] 
} 
JSON; 

$request_body = json_decode($json); 

$apiKey = "yourapikey"; 
$sg = new \SendGrid($apiKey); 

$response = $sg->client->mail()->send()->post($request_body); 
echo $response->statusCode(); 
echo $response->body(); 
print_r($response->headers());