私のextbase 6.2拡張機能から、別の電子メールを送信したいと思います。私が作成しようとしたメール機能を呼び出す関数で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";
}
}
から
(最後に私の質問を参照してください$attachment
ための@param
に気付かない):私はこのようになりますメール機能を書いたコントローラクラスで
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));
私の質問:
- どのように成功した(事前に
MailMessage
オブジェクトを作成し、その中の添付ファイルを作成せずに)私のextbase延長のコントローラタイプSwift_Attachment
のオブジェクトを作成することができますか? - の変数として
@param
を入力すると、これを機能させるためのメール機能に何が追加されますか?
- EDIT -
オクラホマので、明らかに誰もあることを意味していないのでことしません。
私は、Reneの手法を複数の添付ファイルに対するDimitriのスケーラブルな回答と組み合わせて使用しました。私の@paramはarray
になりました。私は実際の添付ファイルをインスタンス化した後に作成する必要があるので、MailMessage
- ありがとう!
Jigalが答えたような問題があると思います。 '$ email'オブジェクトがインスタンス化されていません私は最初に添付ファイルをインスタンス化したいからです。そして彼の答えによると、 'Swift_Attachment'クラスは' MailMessage'クラスをインスタンス化するときにロードされます。だから、メールクラスなしでインスタンス化する方法、それ以外の場合は@param型をどのようにテストすることができるのだろうか。 私はあなたの前方および保護された提案が非常に有用な、感謝を見つける! –
くそー、答えを正しく読まないより...もう一つの方法は、メール作成後にコンテンツ、ファイル名、およびMIMEタイプを関数にバイパスして、関数を初期化することです。私は私のansewerを編集しました。 –