【发布时间】:2023-04-03 14:22:01
【问题描述】:
我使用 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(上面给出的代码)的上下文中,我将如何更改它?
【问题讨论】:
标签: php email e-commerce contact prestashop