我使用 Prestashop 建立了一个电子商务网站,在测试他们的联系表时,我发现如果用户输入 Yahoo 电子邮件地址作为发件人地址,我没有收到任何消息。但是,如果用户输入 Gmail 地址,我没有问题。
Prestashop 当前设置为将 PHP Mail() 函数用于联系表单。可能是什么问题以及我可以查看哪些解决方案,因为我显然需要接收来自所有人的邮件,而不仅仅是那些拥有 gmail 地址的人。
以下是contact-form.php页面中的代码:-
<?php
$useSSL = true;
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/header.php');
$errors = array();
$smarty->assign('contacts', Contact::getContacts(intval($cookie->id_lang)));
if (Tools::isSubmit('submitMessage'))
{
if (!($from = Tools::getValue('from')) OR !Validate::isEmail($from))
$errors[] = Tools::displayError('invalid e-mail address');
elseif (!($message = nl2br2(Tools::getValue('message'))))
$errors[] = Tools::displayError('message cannot be blank');
elseif (!Validate::isMessage($message))
$errors[] = Tools::displayError('invalid message');
elseif (!($id_contact = intval(Tools::getValue('id_contact'))) OR !(Validate::isLoadedObject($contact = new Contact(intval($id_contact), intval($cookie->id_lang)))))
$errors[] = Tools::displayError('please select a contact in the list');
else
{
if (intval($cookie->id_customer))
$customer = new Customer(intval($cookie->id_customer));
if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{message}' => stripslashes($message)), $contact->email, $contact->name, $from, (intval($cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : $from)))
$smarty->assign('confirmation', 1);
else
$errors[] = Tools::displayError('an error occurred while sending message');
}
}
$email = Tools::safeOutput(Tools::getValue('from', ((isset($cookie) AND isset($cookie->email) AND Validate::isEmail($cookie->email)) ? $cookie->email : '')));
$smarty->assign(array(
'errors' => $errors,
'email' => $email
));
$smarty->display(_PS_THEME_DIR_.'contact-form.tpl');
include(dirname(__FILE__).'/footer.php');
?>
更新:
我联系了我的电子邮件托管公司,他们给出了以下建议:-
您需要将字段 $from 中的电子邮件地址更改为要合并此脚本的域名上的任何电子邮件地址。例如,如果您的域名是 abc.com,那么您可以将发件人电子邮件地址定义为 some-name@abc.com。此电子邮件地址不必存在于 abc.com 的邮件服务器上,但是,$from 字段中的域名必须是您的。您可以使用电子邮件地址,例如 Do_Not_reply@abc.com。
$mailto 字段中的值需要更改为电子邮件地址,其中包含通过表单提交的数据的电子邮件需要发送。
因此,在 Prestashop 的contact-form.php(上面给出的代码)的上下文中,我将如何更改它?