形式我建立它发送使用SilverStripe文档(Introduction to frontend forms和Simple contact form)中提供的方法结合起来,在提交电子邮件联系表单。测试SilverStripe电子邮件联系,从本地服务器
的代码(下面附带)似乎是工作正常,但是我想知道是否有可能从本地服务器发送电子邮件测试(在我的情况,MAMP)正确测试功能。
提前感谢
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();
}
编辑:17年8月4日
正如per已经在php.ini文件中MAMP(更新sendmail的领域都为毫安/斌/ PHP/php5.6.10/CONF和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]
作为per已经更新了的mysite/_config/config.y毫升,包括:
Email:
send_all_emails_to: '[email protected]'
一切都无济于事......
忘了电子邮件环境的定义。但是,已经做了这个补充,但仍然无法将表单中的电子邮件发送到Gmail帐户。 回复出电子邮件对象的属性显示期望值已被分配,但是执行'.send()'时似乎没有发生。奇怪的是,之前的一些测试已经发送到“垃圾邮件”文件夹,但是我一直无法复制这些结果。 看着Silverstripe上下文的外部,'SMTP'和'sendmail_path ='是否需要在MAMP'php.ini'文件中配置才能使用? (在OS X中工作) –
这是一个不同的问题,但还有很多其他的例子,在Stackoverflow上已经有 –
问你是完全正确的;这个问题的范围应该已经澄清。是的,SO上的现有职位非常宝贵。我不确定这个问题的原因是否在我的SilverStripe或MAMP设置中(因此发布了一个额外的问题)。为了测试目的,我已经解决了这个问题 - 将在下面发布。 –