如何上传PDF文件并通过TYPO3中的电子邮件发送?

如何上传PDF文件并通过TYPO3中的电子邮件发送?,typo3,typo3-7.6.x,typo3-extensions,Typo3,Typo3 7.6.x,Typo3 Extensions,我有一个包含以下字段的表单 名字 地址 接触 PDF(文件附件) 此PDF将从系统上载,并通过电子邮件将这些详细信息与上载的PDF一起发送。我希望这些细节是在自定义的电子邮件模板使用独立的看法和发送 我使用的是TYPO3 v7.6.23 我不熟悉打字3。如何做到这一点 我正在这里添加代码 $addJobsInfo = GeneralUtility::makeInstance('MNU\\MnuJobs\\Domain\\Model\\Jobs'); $addJobsInfo->set

我有一个包含以下字段的表单

  • 名字
  • 地址
  • 接触
  • PDF(文件附件)
此PDF将从系统上载,并通过电子邮件将这些详细信息与上载的PDF一起发送。我希望这些细节是在自定义的电子邮件模板使用独立的看法和发送

我使用的是TYPO3 v7.6.23

我不熟悉打字3。如何做到这一点

我正在这里添加代码

$addJobsInfo = GeneralUtility::makeInstance('MNU\\MnuJobs\\Domain\\Model\\Jobs'); 
$addJobsInfo->setName($arguments['name']);
$addJobsInfo->setAddress($arguments['address']);
$addJobsInfo->setContact($arguments['contact']);             
$this->jobsRepository->add($addJobsInfo);
$persistenceManager = $this->objectManager->get('TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager');
$persistenceManager->persistAll();
$lastID = $addJobsInfo->getUid();            

$getPDF = $_FILES;                        
if(!empty($getPDF)){
    $pdfName = $getPDF['tx_mnujobs_mnujobs']['name']['jobsDOC'];  
    $pdfTemp = $getPDF['tx_mnujobs_mnujobs']['tmp_name']['jobsDOC'];   
    $resourceFactory = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance();
    $storage = $resourceFactory->getDefaultStorage();
    $folder = $storage->getFolder('user_upload');
    $pdfFinalName = 'Jobs_'.time().'_'.$pdfName;
    $uploadPDF = $storage->addFile($pdfTemp, $folder, $pdfFinalName);            

    if($lastID){
        $newId = 'NEW'.$lastID;
        $data = array();
        $data['sys_file_reference'][$newId] = array(
            'table_local' => 'sys_file',
            'uid_local' => $uploadPDF->getUid(),
            'tablenames' => 'tx_mnujobs_domain_model_jobs',
            'uid_foreign' => $lastID,
            'fieldname' => 'pdfattachment',
            'pid' => $this->settings['pageUid']
        );
        $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
        $dataHandler->start($data, array());
        $dataHandler->process_datamap();                
    }
}    

//E-mail Sending
$mail = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
$mail->setSubject('Contact Details');
$mail->setTo('sample@gmail.com']);
$mail->setBody('Hi, This is a sample. Please Find the Attachment', 'text/html');
$attachment = Swift_Attachment::fromPath($folder->getIdentifier().$pdfFinalName);
$attachment->setFilename('Document.pdf');
$mail->attach($attachment);
$sendMail = $mail->send();
我收到这个例外

无法打开文件进行读取 [/user_upload/Jobs_15257577243_sample.pdf]

所以我换了这个

$attachment = Swift_Attachment::newInstance($folder->getIdentifier().$pdfFinalName, 'Document.pdf', 'application/pdf');
$mail->attach($attachment);

两者都不起作用,这是我出了问题的地方?

使用ext:powermail,它功能丰富,维护积极,文档记录良好

对我有效的方法是在标识符前面添加
fileadmin

$filePath = 'fileadmin' . $file->getOriginalResource()->getIdentifier();
$attachment = \Swift_Attachment::fromPath($filePath);
$mail->attach($attachment);

谢谢,但我需要创建一个自定义扩展。使用swift邮件。我已经创建并插入了数据,但我已经厌倦了Swift邮件附件。(我已经包括了代码)我可能帮不了你。但是,首先检查文件是否存在,如果存在,则它具有正确的权限。关于powermail,请注意:我将其与自定义扩展结合使用,使用finisher类写入数据库。