Per [1], mi sembra strano ti venga restituito un messaggio di errore, cioè a livello di PHP si tratta solo di una stringa: l'errore è lato PHP oppure viene restituito un messaggio da sendGrid diverso da 202? Controlla che nel codice HTML non siano presenti doppi apici che spezzano la stringa.
Per [2], puoi ripassare i dati tramite GET (oppure ti salvi i dati in variabili di sessione). Per ripassare tramite GET, intendo:
Codice PHP:
"text/html", file_get_contents("email.php?verifyId=".$_GET['verifyId']."&code=".$_GET['code'])
Quindi, email.php sarà una cosa del tipo:
Codice PHP:
if(!isset($_GET['verifyId'], $_GET['code']))
die('Errore: non ho i parametri GET!');
echo '<html>
...
<p> Il codice verifyId è: '.$_GET['verifyId'].'</p>
<p> Il codice code è: '.$_GET['code'].'</p>
...
</html>';
Ciao!