I am trying to pass a dynamic value using SendGrid’s PHP Library. It works when I pass in a string but I add a dynamic value, I get this error Recoverable fatal error: Object of class SendGridMailMail could not be converted to string in C:xampphtdocsnewvendorsendgridsendgridlibhelperAssert.php on line 30
This one works
$email = new SendGridMailMail();
$email->setFrom("support@example.com", "example");
$email->setSubject("IMPORTANT: Signal failure");
$email->addTo("user@exampl.com", "{$fname}");
$email->addContent("text/plain", "{$message}");
$email->addContent(
"text/html", "{$message}"
);
$sendgrid = new SendGrid('APIKEY');
try {
$response = $sendgrid->send($email);
print $response->statusCode() . "n";
print_r($response->headers());
print $response->body() . "n";
} catch (Exception $e) {
echo 'Caught exception: '. $e->getMessage() ."n";
}
This one fails
$email = new SendGridMailMail();
$email->setFrom("support@example.com", "example");
$email->setSubject("IMPORTANT: Signal failure");
$email->addTo("{$email}", "{$fname}"); //this line causes the error
$email->addContent("text/plain", "{$message}");
$email->addContent(
"text/html", "{$message}"
);
$sendgrid = new SendGrid('APIKEY');
try {
$response = $sendgrid->send($email);
print $response->statusCode() . "n";
print_r($response->headers());
print $response->body() . "n";
} catch (Exception $e) {
echo 'Caught exception: '. $e->getMessage() ."n";
}
Any suggestion would be appreciated Thanks
Advertisement
Answer
In the example where it fails, $email is not a string containing an email address. It is an instance of SendGridMailMail().
Calling it as a string won’t work, because it looks like
SendGridMailMail()does not implement the Stringable interface.
You can prevent accidents like these by using better variable names like
$mailer = new SendGridMailMail();
or
$sendGridMail = new SendGridMailMail();