问题描述
我将Prestashop用作电子商务购物车和CMS解决方案,但在接收通过联系表发送的电子邮件时遇到问题.我四处询问,发现问题是由于我需要从我的域(例如[email protected])分配发件人"地址和用户输入的电子邮件以为其分配不同的变量(例如, 回复邮件").
I'm using Prestashop as my ecommerce shopping cart and CMS solution and was having problems receiving emails sent via the contact form. I asked around and found the problem to be due to the fact that I need to assign the 'from' address as something from my domain (e.g. [email protected]) and the email entered by user to be assigned a different variable (e.g. 'replyemail').
但是,Prestashop联系人表单是使用PHP Smarty模板引擎创建的,该引擎具有单独的contact-form.php文件和单独的contact-form.tpl,我将在下面显示.首先contact-form.php:-
However, the Prestashop contact form is created with a PHP Smarty template engine, which has separate contact-form.php file and a separate contact-form.tpl which I am displaying below.Firstly 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');
?>
接下来是文件contact-form.tpl的代码:-
Next is the code for the file contact-form.tpl:-
{capture name=path}{l s='Contact'}{/capture}
{include file=$tpl_dir./breadcrumb.tpl}
<h2>{l s='Contact us'}</h2>
{if isset($confirmation)}
<p>{l s='Your message has been successfully sent to our team.'}</p>
<ul class="footer_links">
<li><a href="{$base_dir}"><img class="icon" alt="" src="{$img_dir}icon/home.gif"/></a><a href="{$base_dir}">{l s='Home'}</a></li>
</ul>
{else}
<p class="bold">{l s='For questions about an order or for information about our products'}.</p>
{include file=$tpl_dir./errors.tpl}
<form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std">
<fieldset>
<h3>{l s='Send a message'}</h3>
<p class="select">
<label for="id_contact">{l s='Subject'}</label>
<select id="id_contact" name="id_contact" onchange="showElemFromSelect('id_contact', 'desc_contact')">
<option value="0">{l s='-- Choose --'}</option>
{foreach from=$contacts item=contact}
<option value="{$contact.id_contact|intval}" {if isset($smarty.post.id_contact) && $smarty.post.id_contact == $contact.id_contact}selected="selected"{/if}>{$contact.name|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
</p>
<p id="desc_contact0" class="desc_contact"> </p>
{foreach from=$contacts item=contact}
<p id="desc_contact{$contact.id_contact|intval}" class="desc_contact" style="display:none;">
<label> </label>{$contact.description|escape:'htmlall':'UTF-8'}</p>
{/foreach}
<p class="text">
<label for="email">{l s='E-mail address'}</label>
<input type="text" id="email" name="from" value="{$email}" />
</p>
<p class="textarea">
<label for="message">{l s='Message'}</label>
<textarea id="message" name="message" rows="7" cols="35">{if isset($smarty.post.message)}{$smarty.post.message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea>
</p>
<p class="submit">
<input type="submit" name="submitMessage" id="submitMessage" value="{l s='Send'}" class="button_large" />
</p>
</fieldset>
</form>
{/if}
是否有人知道我如何调整此联系表以便分配我选择的发信人地址(例如[email protected]),并希望此电子邮件表能为我服务.如果此发件人"地址存储在其他地方,那么谁能看到它的存储位置或代码中引用的位置?
Does anyone have any idea how I can adjust this contact form in order to assign the from address of my choice (e.g. [email protected]) and hopefully this email form would start working for me. If this 'from' address is stored somewhere else, can anyone see where it might be stored or where it is refering to in the code?
推荐答案
我无法从代码中分辨出来,但是我很想知道的是这个文件:
I can't tell from the code, but my strong guess would be this file:
include(dirname(__FILE__).'/config/config.inc.php');
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)))
我现在不能仔细查看代码,而是替换任何一个
I can't look closely into the code right now, but replacing either
'{email}' => $_POST['from']
或
$from
作者
'{email}' => 'whatever_you_want'
或
'whatever_you_want'
可能可以解决问题.
这篇关于重新配置PHP Mail()Smarty联系表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!