Douken Posted November 14, 2020 at 10:02 AM Report Share #620147 Posted November 14, 2020 at 10:02 AM Bom dia. Eu quero submeter o conteúdo de um formulário como um anexo em PDF, através do SENDGRID. O fluxo que pretendo é o seguinte: 1. Um cliente preenche um formulário no meu site. 2. Carrega no botão submeter. 3. É gerado um PDF através do FPDF. 4. Um email é enviado para mim, com algum texto e o PDF gerado pelo FPDF, como anexo, através do SENDGRID. Deixo aqui algum do código: <?php if(isset($_POST['sendemail'])) { require('fpdf/fpdf.php'); $title = 'Inscrição'; $name = $_POST['name']; $email_id = $_POST['email']; $age = $_POST['age']; $aulas = $_POST['aulas']; $experience = $_POST['experiencia-dança']; $conhecimento = $_POST['conhecimento']; $comentario = $_POST['comentario']; (...) $pdf = new FPDF(); $pdf -> AddPage(); $pdf->SetTitle($title); (...) $pdf->Output(); (...) $sendgrid = new \SendGrid($API_KEY); $email = new \SendGrid\Mail\Mail(); $email->setFrom("********@gmail.com", "***** SAMA"); $email->setSubject("Email de teste"); $email->addTo("*****@gmail.com", "****SAMA"); $email->addContent("text/plain", $comentario); If($sendgrid->send($email)); { $msg = "Obrigado pelo seu contacto!"; } Com este código, o email é enviado, mas o anexo não. Quando incluo as seguintes linhas de código, o email deixa de ser enviado: $attachment = $pdf; $file_encoded = base64_encode(file_get_contents($attachment)); $email->addAttachment( $file_encoded, "application/text", "test.pdf", "attachment" ); Alguém me consegue ajudar? Obrigado Link to comment Share on other sites More sharing options...
eSkiSo Posted November 14, 2020 at 08:35 PM Report Share #620149 Posted November 14, 2020 at 08:35 PM (edited) Pelo que vejo do teu codigo estas a definir a variavel $attachment = $pdf e $pdf é uma instancia do FPDF, pode ser por isso. Tenta: $attachment = $pdf->Output('S'); //S: return the document as a string. E depois ao fazer o base64 podes "ignorar" o file_get_contents $file_encoded = base64_encode($attachment); Nunca usei o Sendgrid por isso não sei se os parametros estão bem, mas é tentar =D Edited November 14, 2020 at 08:36 PM by eSkiSo 1 Report Os meus programas em http://www.eskiso.net Link to comment Share on other sites More sharing options...
Douken Posted November 14, 2020 at 08:48 PM Author Report Share #620150 Posted November 14, 2020 at 08:48 PM 8 minutos atrás, eSkiSo disse: Pelo que vejo do teu codigo estas a definir a variavel $attachment = $pdf e $pdf é uma instancia do FPDF, pode ser por isso. Tenta: $attachment = $pdf->Output('S'); //S: return the document as a string. E depois ao fazer o base64 podes "ignorar" o file_get_contents $file_encoded = base64_encode($attachment); Nunca usei o Sendgrid por isso não sei se os parametros estão bem, mas é tentar =D Obrigado pela resposta, mas já consegui resolver da seguinte forma: $pdfdoc = $pdf->Output("pdf.pdf", "S"); $att1 = new \SendGrid\Mail\Attachment(); $att1->setContent($pdfdoc); $att1->setType("application/octet-stream"); $att1->setFilename(basename("pdf.pdf")); $att1->setDisposition("attachment"); $email->addAttachment($att1); Tive de remover o $file_encoded, uma vez que não me estava a deixar criar o pdf. Obrigado. 1 Report Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now