Was ich auch nicht verstehe, wohin dies eingetragen werden muss:
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport'] = 'smtp';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_server'] = 'smtp.googlemail.com:587';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_encrypt'] = 'tls';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_username'] = 'meine@mail.com';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_password'] = 'password';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'] = 'meine@mail.com';
$GLOBALS hab ich jetzt in einer Datei "AdditionalConfiguration.php" eingetragen und unter "typo3conf/" gespeichert.
dazu hab ich jetzt zwischen setSubject und setTo dies hinzugefügt: $mail->setFrom(array('test@test.de' => 'test name'));
Jetzt bekomme ich folgende Fehlermeldung:
Oops, an error occurred!
Failed to authenticate on SMTP server with username "meine@mail.de" using 2 possible authenticators
Dazu bekam ich von Google eine Email, dass jemand versucht hat bei mir einzuloggen: Anmeldeversuch verhindert
Also "AdditionalConfiguration.php" wird damit benötigt um Lokal einen Email Versand zu testen. Auf einem Live System wird diese Datei nicht benötigt.
/**
* action create
*
* @param \EbextHC\Ebexthc\Domain\Model\Contact $newContact
* @return void
*/
public function createAction(\EbextHC\Ebexthc\Domain\Model\Contact $newContact) {
$this->contactRepository->add($newContact);
$mail =
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
// Betreff
$mail->setSubject('Kontaktformular');
// absender
$mail->setFrom(array('test@test.de' => 'test name'));
// sendet an eine gewünschte email adresse
$mail->setTo(array('meine@mail.com' => 'Eugen'));
// nachricht
$mail->setBody('Here is the message itself');
$mail->addPart('<q>Here is the message itself</q>', 'text/html');
$mail->send();
// weiterleitung auf eine "Thank you for required" Seite.
$this->forward('thanks');
Soweit funktioniert der Versand und ich bekomme die Emails.
!Dazu musste ich aber eine neue Email Adresse bei Google erstellen, weil mit der alten Adresse es nicht funktioniert hat und es kam zum dieses wie oben genanten Fehler. Evt. liegt an den Email Google Einstellungen.
Jetzt möchte ich natürlich, dass das ganze Formular abgesendet wird und auf eine gültige Email Adresse überprüft wird.
... und auf eine gültige Email Adresse überprüft wird.
Das machst du ganz einfach bei der entsprechenden Property in deinem Model Contact,
etwa so:
/**
* This is the email of the contact
* @var \string
* @validate NotEmpty, EmailAddress
*/
protected $email;
TIP: besorg dir dieses Buch und erspare dir viele unnötige Fehlversuche ;-)
Also, ich hab auch nicht anderes stehen gerade... geht aber trotzdem nicht.
/**
* email
*
* @var string
* @validate NotEmpty, EmailAddress
*/
protected $email = '';
jenses schrieb
TIP: besorg dir dieses Buch und erspare dir viele unnötige Fehlversuche ;-)
Vielen Dank für Buch Empfehlung, werd ich mir zu legen, bis jetzt hab ich mit TYPO3 Ext. von O'Reilly gearbeitet.
ich komme nicht weiter...
ok.
/**
* email
*
* @var string
* @validate NotEmpty, EmailAddress
*/
protected $email = '';
Das war richtig, warum es bei mir nicht ging, lag an den DB Cache!!! Ganz wichtig der muss gelöscht werden. -.-
Weiter gehts mit: das Ganze Formular an E-Mail senden.
also:
/**
* action create
*
* @param \EbextHC\Ebexthc\Domain\Model\Contact $newContact
* @return void
*/
public function createAction(\EbextHC\Ebexthc\Domain\Model\Contact $newContact) {
$view = $this->objectManager->get('TYPO3\\CMS\\Fluid\\View\\StandaloneView');
// Nachricht HTML
$view->setFormat('html');
$view->setTemplatePatchAndFilename(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Templates/Email/Email.html'));
$view->setPartialRootPath(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Partials/'));
$view->setLayoutRootPath(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Layouts/'));
$view->assign('email', $email);
// neuer eintrag in DB
$this->contactRepository->add($newContact);
$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
// Bettref
$mail->setSubject("Neue Anfrage ".$newContact->getroom());
//Absender Array
$sender = array($newContact->getEmail()=>$newContact->getFirstname()." ".$newContact->getLastname());
// Absender
$mail->setFrom($sender);
// Empänger
$mail->setTo(array('meine@mail.com' => 'Eugen'));
// Nachricht
$mail->setBody($view->render(), "text/html");
// senden
$mail->send();
// danke seite
$this->forward('thanks');
Ich hab das Problem, das nach Absenden eine weiße Seite erscheint. Und ich komme einfach nicht weiter..
Also:
/**
* action create
*
* @param \EbextHC\Ebexthc\Domain\Model\Contact $newContact
* @return void
*/
public function createAction(\EbextHC\Ebexthc\Domain\Model\Contact $newContact) {
$view = $this->objectManager->get('TYPO3\\CMS\\Fluid\\View\\StandaloneView');
// Nachricht
$view->setFormat('html');
$view->setTemplatePatchAndFilename(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Templates/Email/Email.html'));
$view->setPartialRootPath(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Partials/'));
$view->setLayoutRootPath(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Layouts/'));
$view->assign('email', $email);
// neuer eintrag in DB
$this->contactRepository->add($newContact);
$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
// Bettref
$mail->setSubject("Neue Anfrage ".$newContact->getroom());
//Absender Array
$sender = array($newContact->getEmail()=>$newContact->getFirstname()." ".$newContact->getLastname());
// Absender
$mail->setFrom($sender);
// Empänger
$mail->setTo(array('meine@mail.com' => 'Eugen'));
// Nachricht
$mail->setBody($view->render(), "text/html");
// senden
$mail->send();
// danke seite
$this->forward('thanks');
Mein Code bis jetzt, komme nicht weiter, weil nach Absenden eine weiße Seite erscheint.
Okay, gefunden. Ich hatte ein paar Tipp Fehler und es fehlte eine Zeile ganz oben.
use \TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* action create
*
* @param \EbextHC\Ebexthc\Domain\Model\Contact $newContact
* @return void
*/
public function createAction(\EbextHC\Ebexthc\Domain\Model\Contact $newContact) {
$view = $this->objectManager->get('TYPO3\\CMS\\Fluid\\View\\StandaloneView');
// Nachricht
$view->setFormat('html');
$view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Templates/Email/Email.html'));
$view->setPartialRootPath(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Partials/'));
$view->setLayoutRootPath(GeneralUtility::getFileAbsFileName('EXT:ebexthc/Resources/Private/Layouts/'));
$view->assign('email', $email);
$view->assign('contact', $newContact);
// neuer eintrag in DB
$this->contactRepository->add($newContact);
$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
// Betreff
$mail->setSubject("Neue Anfrage ".$newContact->getroom());
//Absender Array
$sender = array($newContact->getEmail()=>$newContact->getFirstname()." ".$newContact->getLastname());
// Absender
$mail->setFrom($sender);
// Empänger
$mail->setTo(array('meine@mail.com' => 'Eugen'));
// Nachricht
$mail->setBody($view->render(), "text/html");
// senden
$mail->send();
// danke seite
$this->redirect('thanks');
unter ebexthc/Resources/Private/Templates/Email/Email.html liegt mein Template.
Leider sendet er noch keine Daten mit, dafür aber x beliebigen Text oder HTML Code..