THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

ça remonte à longtemps, mais j'ai toujours un site qui tourne en thelia 1 (qui fonctionne très bien au passage), sauf que j'ai un problème avec le formulaire de contact généré par le plugin formesmagiques :
Quand le  champs email de l'utilisateur contient @orange.fr ou @orange.com), les mails n'arrivent pas dans la boîte de réception. j'ai changé le mail de réception, le problème reste le même. J'ai pensé à un filtre anti-spam... non car même si je mets une adresse gmail en réception (exemple), ces fameux mails n'arrivent pas. Tous les autres passent bien a priori.
Mon hébergeur dit que le souci est le FROM du formulaire qui devrait être un mail en @monnomdedomaine.com ce qui est une régle en effet sur tous les autres formulaires de tous CMS désormais.
Dans ce formulaire le mail d'envoi et le mail que l'utilisateur a renseigné.
Comment est-ce possible de forcer le mail d'envoi par le @nomdedomaine.com et de mettre le mail utilisateur en mail de réponse uniquement ?

merci !

Offline


Regarde la méthode traiter_formulaire_email dans le fichier Formesmagiques.class.php, tu pourras changer ça à cet endroit.


OpenStudio Toulouse

Offline


Ok super, merci Roadster ! (toujours fidèle au post !) smile

Offline


private function traiter_formulaire_email($formdesc, $parametres) {

		$adresses = explode(',', $parametres);

		$message = new Message("envoiformulaire");
		$md = new Messagedesc($message->id);

		$sujet = $this->substitutions_email($md->titre, $formdesc);

		$texte =  $this->substitutions_email($md->descriptiontext, $formdesc);
		$textehtml = $this->substitutions_email($md->description, $formdesc);

		foreach($adresses as $adresse) {
			$res = Mail::envoyer(
				$adresse, $adresse,
				Variable::lire('nom'), $formdesc->champs['email']->valeur,
				$sujet,
				$textehtml,
				$texte
			);
		}
	}

C'est donc dans cette boucle, on est d'accord ?
Je ne vois pas comment modifier ou ajouter le champ FROM et Reply To
Je cherche à mettre l'adresse email qui est présente dans le formulaire dans REPLY TO et celle du site dans un FROM.
tu as des pistes ?

Last edited by lull (28-04-2020 14:33:16)

Offline


en mettant ça :

foreach($adresses as $adresse) {
			$res = Mail::envoyer(
				$adresse, $adresse,
				Variable::lire('nom'), 'formulaire@mondomaine.com',
				$sujet,
				$textehtml,
				$texte
			);

le champ FROM est bien modifié, mais où mettre le REPLY TO et à priori ça ne règle pas le soucis de @orange.fr ...

Offline


ah ben si ça règle le prob de Orange, mes mails mettent juste 20 minutes à arriver depuis ^^.
Donc il me reste le reply to à créer. tu peux m'aider ?

Last edited by lull (28-04-2020 15:02:24)

Offline


Oui, pais pas l'écrire pour toi. Regarde le code de Mail::envoyer(), tu vas trouver.


OpenStudio Toulouse

Offline


Dans le fichier et le bout de code en question ? si oui je ne vois pas.. sad

Offline

Offline


Là ? :

foreach($adresses as $adresse) {
			$res = Mail::envoyer(
				$adresse, $adresse,
				Variable::lire('nom'), 'formulaire@mondomaine.com',
				$sujet,
				$textehtml,
				$texte
			);

ou dans un autre fichier ?

Offline


Mail.class.php, ligne 82.


OpenStudio Toulouse

Offline


ah je n'ai pas ce fichier ^^ et il n'est pas non plus dans la version téléchargeable là http://v1.thelia.net/contributions/plug … s-magiques. il y aurait une autre version ?

Offline


Mais si, dans classes/Mail.class.php


OpenStudio Toulouse

Offline


c'est le screenshot du .zip que je viens de télécharger : http://prntscr.com/s84g2a

Offline


Regarde dans le répertoire "classes" de Thelia, pas dans le répertoire du module.


OpenStudio Toulouse

Offline


ah ok, pardon ^^

Offline


Salut, on a fait ce changement là et ça ne fonctionne pas :
Dans mail.class.php :

    public static function envoyer (
					$to_name, $to_address,
					$from_name, $from_address,
					$replyto,
					$subject,
					$msg_html, $msg_text) {

 		$mailclient = self::creermailer();

		$mailclient->FromName = utf8_decode($from_name);
		$mailclient->From = $from_address;

		$mailclient->addReplyTo($replyto, $replyto);

		$mailclient->AddAddress($to_address, utf8_decode($to_name));

		$mailclient->Subject = utf8_decode($subject);


		if (empty($msg_html)) {
			$mailclient->Body = utf8_decode($msg_text);
		}
		else {
			$mailclient->MsgHTML(utf8_decode($msg_html));
			$mailclient->AltBody = utf8_decode($msg_text);
		}

		return $mailclient->send();
	}

et dans formesmagiques.class.php:

private function traiter_formulaire_email($formdesc, $parametres) {

		$adresses = explode(',', $parametres);

		$message = new Message("envoiformulaire");
		$md = new Messagedesc($message->id);

		$sujet = $this->substitutions_email($md->titre, $formdesc);

		$texte =  $this->substitutions_email($md->descriptiontext, $formdesc);
		$textehtml = $this->substitutions_email($md->description, $formdesc);

		foreach($adresses as $adresse) {
			$res = Mail::envoyer(
				$adresse, $adresse,
				Variable::lire('nom'), 'formulaire@mondomaine.com',
				Variable::lire('email'),
				$sujet,
				$textehtml,
				$texte
			);
		}
	}

Je ne comprends pas pourquoi la variable $from_name ainsi que la variable $replyto ne sont pas présentes dans les headers du mail. Peux tu m'éclairer la dessus ?

Offline


Là je ne sais pas, le code à l'air correct.

Par contre, si  tu as modifié envoyer(), qui est utilisé ailleurs dans Thelia, et ça devrait poser des problèmes si tu n'as pas pris en compte ta modif dans tous les appels à cette méthode.

Tu aurais du créer ta propre version de envoyer() dans formesmagiques, ce serait bien plus sûr.


OpenStudio Toulouse

Offline


Bon ben on a pas réussi...