Zum Inhalt springen

Kontaktemail mit extbase versenden

Erstellt am 14. Oktober 2010 · 1 Antwort · letzte Antwort am 5. November 2010

Tags: E-Mail-Versand, Frage

webcheck ·

Hi,

vlt. hat mir jmd zu folgendem Problem ein kleinen Denkanstoss.
Und zwar möchte ich ein eigenens Kontaktformular in meine Website integrieren.
Gemacht folgendermaßen:
Über Flexforms kann ich ne Empfängermail eingeben. Die restlichen Elemente habe ich direkt im Fluid Template angelegt (Input, Textarea, usw.)

Ich stehe jetzt vor dem Problem, wie ich mit dem Versand dieser Email weitermache....
Jemand ein Tipp wie und wo ich nachdem absenden weiter machen muss?!?
Wie bekomme ich die eingebenen Inhalte aus dem Fluid Template?

lg

Kevin

PS: Früher hätte man das doch so oder so ähnlich gemacht oder?

$this->Mail = t3lib_div::makeInstance('t3lib_htmlmail');
      $this->Mail->start();
      $this->Mail->recipient = $this->lConf['glcm016_email'];
      
      $mailtext  .= "Folgende Anfrage ist am ".date('d.m.Y',time())." um ".date('H:i',time())." Uhr eingegangen:\n\n";
      $mailtext  .= "Name:              ".t3lib_div::_GP('name')."\n";
      $mailtext  .= "Email:             ".t3lib_div::_GP('email')."\n";      
      $mailtext  .= "Telefon:           ".t3lib_div::_GP('phone')."\n\n";
      $mailtext  .= "Betreff:           ".t3lib_div::_GP('subject')."\n";
      $mailtext  .= "Mitteilung:        ".t3lib_div::_GP('message')."\n";          
      
      $this->Mail->from_email = t3lib_div::_GP('email');
      $this->Mail->from_name = t3lib_div::_GP('vname').' '.t3lib_div::_GP('nname');
      $this->Mail->returnPath = 'norespond@solon.de';
      $this->Mail->setPlain($mailtext);
      $result = $this->Mail->send($this->lConf['cm005_email']);
freshman17 ·

Controller:

class Tx_MyExtension_Controller_IndexController extends Tx_Extbase_MVC_Controller_ActionController {
	
	/**
	 * @var	array
	 */
	private $param = array();

	/**
	 * @var string
	 */
	private $extKey = 'tx_my_extension';
	
	/**
	 * Initialisierung
	 * 
	 * @return	void
	 */
	public function initializeAction() {
		$this->param = t3lib_div::GPvar($this->extKey);
	}
	
	/**
	 * Gibt die uebergebenen $_POST | $_GET Parameter an die View und
	 * leitet an die SubmitAction weiter (falls alle noetigen Daten vorhanden sind)
	 * 
	 * @return	void
	 */
	public function indexAction() {
		// E-Mail auf Gueltigkeit (nur Syntax) pruefen
		if($this->validEmail($this->param['index']['email'])) {
			$mail = new Zend_Mail('utf-8');
			....
			$mail->send();
			$this->redirect('submit');
		}
		$this->view->assign('param', $this->param);
	}
	
	/**
	 * E-Mail auf Gueltigkeit (nur Syntax) pruefen
	 *
	 * @param	string
	 * @return	boolean		true wenn E-Mail ok
	 */
	private function validEmail($email) {
		$tld = '(com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z][a-z])';
		$patter ='/\w[-.\w]*\@[-a-z0-9]+(\.[-a-z0-9]+)*\.'.$tld.'$/i';
		return preg_match($patter, $email);
	}	

}

Template:

<f:form controller="Index" action="index" method="post" enctype="multipart/form-data" >
	<f:form.textbox size="10" class="textbox" name="index[email]" value="{param.index.email}" />
	<f:form.submit name="inquiry_submit" value="Senden" />
</f:form>

Erklärung:

Im FE wird eine E-Mail eingegeben und nach dem senden der Controller aufgerufen. Dort wird in der index-Methode geprüft ob der die E-Mail valide ist, falls ja wird versendet und an eine andere Seite weitergeleitet. Falls die Mail nicht in ordung ist, muß der User seine Eingabe verbesser.

Hier wird mit Zend_Mail statt mit t3lib_htmlmail gearbeitet, sollte aber irrelevant sein.

Viel Erfolg