從我的extbase 6.2擴展我想發送不同的電子郵件。
在控制器類我寫了一個郵件功能,看起來像這樣:
(注意沒有@param
的$attachment
- 見我的問題在年底)爲MailMessage創建附件
/**
*
* @param string $to
* @param string $subject
* @param string $email_prefix
* @param string $msg
* @param string $email_suffix
*/
public function mailAction($to, $subject, $email_prefix, $msg, $email_suffix, $attachment = null) {
try {
$from = \TYPO3\CMS\Core\Utility\MailUtility::getSystemFrom();
$body = $email_prefix
. PHP_EOL . PHP_EOL
. $msg
. PHP_EOL . PHP_EOL
. $email_suffix;
$htmlBody = nl2br($body);
$toEmail = $to;
$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
$mail->setFrom($from)
->setTo(array($toEmail))
->setSubject($subject)
->setBody($htmlBody, 'text/html');
$mail->addPart($body, 'text/plain');
if ($attachment) {
$mail->attach($attachment);
}
if (empty($toEmail) || strpos($toEmail, '@') === FALSE) {
$this->addFlashMessage('Die Mail konnte nicht verschickt werden! Keine Email-Adresse des Empfängers', '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR
);
} else {
if ($mail->send()) {
$this->addFlashMessage('Die Mail für wurde verschickt!', '');
} else {
$this->addFlashMessage('Die Mail konnte nicht verschickt werden!', '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR
);
}
}
$this->redirect('list');
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
在調用短信功能我試圖創建一個功能像這樣的附件,但它沒有說:Fatal error: Class 'Swift_Attachment' not found in.../...Controller.php
$attachment = \Swift_Attachment::newInstance()
->setFilename('Termine.html')
->setContentType('text/html')
->setBody($emailView->render());
然後我把郵件功能是這樣的:
$this->redirect('mail', null, null, array(
$to,
$subject,
$email_prefix,
$msg,
$email_suffix,
$attachment));
個
我的問題:
- 我怎樣才能成功地創建我的extbase擴展的控制器
Swift_Attachment
類型的對象(而無需事先創建一個MailMessage
對象和創建它裏面的附件)? @param
作爲我的郵件函數中的$attachment
變量的類型後應該如何工作?
- 編輯 -
好了,顯然沒有一個人是因爲它並不意味着是。
我現在使用Rene的方法將它與Dimitri的可擴展的答案結合起來用於多個附件。我的@param現在是array
,因爲我必須在實例化MailMessage
後創建實際附件 - 謝謝!
我認爲這就是Jigal在他的答案中說的問題 - 我沒有實例化$ email對象但是因爲我想先實例化附件。根據他的回答,在實例化MailMessage類時,會加載Swift_Attachment類。所以我想知道如何在沒有郵件類的情況下實例化它,否則我會怎麼測試你的@param類型。 我發現你的轉發和受保護的建議非常有幫助,謝謝! –
該死的,比我沒有正確地閱讀答案...另一種方式可能是繞過內容,文件名和mimetype函數來創建郵件後初始化它。我編輯了我的ansewer。 –