我正在使用 silvestripe 4.12,我正在尝试从表单发送电子邮件,但我需要从输入发送带有附件的电子邮件。
但是当我发送联系表单时,它会抛出服务器错误:抱歉,处理您的请求时出现问题。
我的代码:
public function Reg_Form()
{
$fields = new FieldList(
TextField::create('Name', 'Meno *')->setAttribute('placeholder', 'Vaše meno (stačí krstné)'),
new FileField('zivotopis','Životopis, vyhláška, prípadne ďalší certifikát'),
new FileField('foto','Pár foto vašej práce'),
);
$actions = new FieldList(
FormAction::create('submit', 'Odoslať')->addExtraClass('btn')
);
$form = new Form($this, 'Reg_Form', $fields, $actions, $required);
return $form;
}
public function submit($data, $form)
{
$name = $data['Name'];
.
.
$file = $data['zivotopis'];
$content = file_get_contents($file['tmp_name']);
$messageBody = "
<h1>Správa z online formuláru</h1>
<p><strong>Meno:</strong> $name</p>
.
.
";
if($data['Code'] != $data['Ans']) {
return [
'ErrorMessage' => 'Odpovedzte správne na overovaciu otázku'
];
} else {
$email = Email::create('[email protected]', '[email protected]', 'Správa z online formuláru',$messageBody);
$email->addAttachment($content);
$email->send();
return [
'Form' => '',
$this->redirect($this->AbsoluteLink().'reg-form-ok')
];
}
}
我找到解决办法了
if ($_FILES['zivotopis']['tmp_name']) {
$email->addAttachment($_FILES['zivotopis']['tmp_name'], $_FILES['zivotopis']['name']);
}
if ($_FILES["foto"]["tmp_name"]) {
foreach ($_FILES["foto"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["foto"]["tmp_name"][$key];
$name = basename($_FILES["foto"]["name"][$key]);
$email->addAttachment($tmp_name, $name);
}
}
}