Ich muss in der Lage sein, eine, vielleicht mehr, auf einem Amazon S3-Server gespeicherte Dateien als Anhänge in einer mit SendGrid erstellten E-Mail senden.PHP: SendGrid Mail-Anhänge von S3-Server
Das Problem, das ich habe, ist, dass ich kein Web-Dev-Experte bin und die spärlichen PHP-Beispiele, die ich finden kann, mir nicht viel helfen.
Muss ich die Dateien vom S3-Server in das lokale Verzeichnis/tmp herunterladen und sie auf diese Weise als Anlagen hinzufügen, oder kann ich den Dateikörper vom FileController übergeben und ihn so als Anhang einfügen?
Ich bin nicht wirklich sicher, wo ich anfangen soll, aber hier ist, was ich bisher getan habe:
$attachments = array();
// Process the attachment_ids
foreach($attachment_ids as $attachment_id) {
// Get the file if it is attached to the Activity
if (in_array($attachment_id, $activity_file_ids)) {
$file = File::find($attachment_id);
$fileController = new FileController($this->_app);
$fileObject = $fileController->getFile($attachment_id);
error_log(print_r($fileObject, true));
$attachment = array();
$attachment['content'] = $fileObject;
$attachment['type'] = $fileController->mime_content_type($file->file_ext);
$attachment['name'] = explode(".", $file->filename, 2)[0];
$attachment['filename'] = $file->filename;
$attachment['disposition'] = "inline";
$attachment['content_id'] = '';
}
}
Mein nächster Schritt die $ Befestigungs Array an den $ Attachments Array wäre zu schieben. Sobald $ Attachments abgeschlossen ist, durchlaufen Sie es und fügen Sie jeden $ Anhang zum SendGrid E-Mail-Objekt hinzu (die E-Mail funktioniert ohne Anhänge, BTW.)
Problem ist, ich bin mir nicht sicher, ob ich bin die richtige Straße damit gehen oder wenn es eine viel kürzere und sauberere (und funktionierende) Art und Weise ist, dies zu tun?
FileController-> getFile() im Wesentlichen Folgendes aus:
$file = $this->_s3->getObject(array(
'Bucket' => $bucket,
'Key' => $filename,
));
return $file['Body'];
Jede Hilfe (insbesondere Code-Beispiele) würde sehr geschätzt!