Je suis en train de créer un formulaire de contact qui envoie un e-mail lors de la soumission en utilisant une combinaison d'approches fournies dans la documentation SilverStripe (Introduction to frontend forms et Simple contact form). Le code (inclus ci-dessous) semble fonctionner correctement, mais je me demande s'il est possible d'envoyer des emails de test d'un serveur local (dans mon cas, MAMP) pour tester correctement la fonctionnalité.Test des formulaires de contact électronique SilverStripe à partir du serveur local
Un grand merci à l'avance
public function ContactForm() {
$form = Form::create(
$this,
__FUNCTION__,
FieldList::create(
TextField::create('Name','')
->setAttribute('placeholder','Name*')
->addExtraClass('form-field'),
EmailField::create('Email','')
->setAttribute('placeholder','Email*')
->addExtraClass('form-field'),
TextareaField::create('Message','')
->setAttribute('placeholder','Message*')
->addExtraClass('form-field')
),
FieldList::create(
FormAction::create('submit', 'Send Message')
->setUseButtonTag(true)
->addExtraClass('text-button')
),
RequiredFields::create('Name','Email','Message')
);
$form->addExtraClass('contact-form');
return $form;
}
public function submit($data, $form){
$email = new Email();
$email->setTo('[email protected]');
$email->setFrom($data['Email']);
$email->setSubject("Contact Message from {$data["Name"]}");
$messageBody = "
<p><strong>Name:</strong> {$data['Name']}</p>
<p><strong>Message:</strong> {$data['Message']}</p>
";
$email->setBody($messageBody);
$email->send();
$form->sessionMessage("Thanks for your message, I'll get back to you as soon as I can",'good');
return $this->redirectBack();
}
Edit: 8/04/17
Comme per ont mis à jour les champs sendmail dans les fichiers php.ini dans MAMP (dans MAMP/bin/php/php5.6.10/conf et MAMP/conf/php5.6.10) à:
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =/usr/sbin/sendmail -t -i -f [email protected]
Comme per ont mis à jour le monsite/_config/config.y ml d'inclure:
Email:
send_all_emails_to: '[email protected]'
Tout cela en vain ...
oublié l'environnement de messagerie définition. Ont fait cet ajout, cependant, je suis toujours incapable d'envoyer des e-mails du formulaire à un compte Gmail. Les attributs de l'objet d'e-mail affichant des valeurs attendues ont été attribués, mais rien ne semble se produire lorsque '.send()' est exécuté. Bizarrement, certains tests antérieurs ont été envoyés dans le dossier 'spam', mais je n'ai pas réussi à reproduire ces résultats. En regardant en dehors du contexte Silverstripe, est-ce que 'SMTP' et' sendmail_path = 'doivent être configurés dans le fichier' php.ini' de MAMP pour que cela fonctionne? (travaillant sous OS X) –
C'est une question différente, mais il y a beaucoup d'autres exemples de la même question posée sur Stackoverflow déjà –
vous avez totalement raison; la portée de cette question aurait dû être clarifiée. Oui, les publications existantes sur le SO ont été d'une valeur inestimable. Je n'étais pas sûr si la cause de ce problème a menti dans ma configuration SilverStripe ou MAMP (affichant donc une question supplémentaire). J'ai un peu résolu ce problème à des fins de test - je l'afficherai ci-dessous. –