我的新手在这里闪闪发光......我设法拼凑了一个效果很好的表单邮件,但是现在我需要添加两个字段,我不知道该怎么做。几个月来,我已经评论了一些我不需要的东西,但现在我被卡住了。
我借用本教程制作原始表格: http://trevordavis.net/blog/tutorial/ajax-forms-with-jquery/
但后来我把它用来制作电子邮件注册表格,因此我需要的字段是:
收件人电子邮件(我的电子邮件硬编码)
发件人电子邮件地址
对于我的表格,我有这个:
<div>
<?php include('verify.php'); ?>
<form action="index_success.php" method="post" id="sendEmail" class="email">
<h3 class="register2">Newsletter Signup:</h3>
<ul class="forms email">
<li class="name"><label for="yourName">Name: </label>
<input type="text" name="yourName" class="info" id="yourName" value=" " /><br>
</li>
<li class="city"><label for="yourCity">City: </label>
<input type="text" name="yourCity" class="info" id="yourCity" value=" " /><br>
</li>
<li class="email"><label for="emailFrom">Email: </label>
<input type="text" name="emailFrom" class="info" id="emailFrom" value="<?= $_POST['emailFrom']; ?>" />
<?php if(isset($emailFromError)) echo '<span class="error">'.$emailFromError.'</span>';
?>
</li>
<li class="buttons email">
<button type="submit" id="submit">Send</button>
<input type="hidden" name="submitted" id="submitted" value="true" />
</li>
</ul>
</form>
</div>
emailcontact.js:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var emailFromVal = $("#emailFrom").val();
if(emailFromVal == '') {
$("#emailFrom").after('<span class="error">You forgot to enter the email address to send from.</span>');
hasError = true;
} else if(!emailReg.test(emailFromVal)) {
$("#emailFrom").after('<span class="error">Enter a valid email address to send from.</span>');
hasError = true;
}
var subjectVal = $("#subject").val();
if(subjectVal == '') {
$("#subject").after('<span class="error">You forgot to enter your name.</span>');
hasError = true;
}
var messageVal = $("#message").val();
if(messageVal == '') {
$("#message").after('<span class="error">You forgot to enter your city.</span>');
hasError = true;
}
if(hasError == false) {
$(this).hide();
$("#sendEmail li.buttons").append('<img src="/wp-content/themes/default/images/template/loading.gif" alt="Loading" id="loading" />');
$.post("/includes/sendemail.php",
//emailTo: emailToVal,
{ emailFrom: emailFromVal, subject: subjectVal, message: messageVal },
function(data){
$("#sendEmail").slideUp("normal", function() {
$("#sendEmail").before('<h3 class="register2">Success!</h3><p class="emailbox">You are on the Newsletter email list.</p>');
});
}
);
}
return false;
});
});
sendmail.php:
<?php
$mailTo = $_POST['emailTo'];
$mailFrom = $_POST['emailFrom'];
$subject = $_POST['yourName'];
$message = $_POST['yourCity'];
mail('me@myemail.com','Newsletter', 'Name='.$subject. ' City='.$message, "From: ".$mailFrom);
?>
感谢您的帮助!我正在试图解决这个问题。
答案 0 :(得分:1)
不是100%确定这里的难点。从我对OP的阅读中,我假设如下:
我不完全确定这是否是您想要的“发件人电子邮件地址主题(硬编码)”听起来不太清楚。
无论如何,取消这些假设:
只需在PHP文件的表单中为“ firstName ”和“ city ”添加两个新字段(注意:这些只是建议的字段名称,并且可以是你想要的任何东西。但是为了清楚起见,我会在提供的解决方案中使用这些。)
在 sendmail.php 文件中,修改如下:
$ mailTo ='your_email_address@server.com'; //这是硬编码的收件人地址 $ mailSubject ='这是主题'; //这是硬编码的主题
$ mailFrom = $ _POST ['emailFrom']; $ firstName = $ _POST ['firstName']; $ city = $ _POST ['city'];
...(其他字段,可能还有一些进一步的验证)...... $ mailHeader =“From:{$ mailFrom}”; $ mailBody =“Name = {$ firstName} City = {$ city}”;
mail($ mailTo,$ mailSubject,$ mailBody,$ mailHeader);
我还应该注意,在包含表单的PHP文件中,没有名为“subject”的字段,但是你的Javascript / jQuery验证会引用它。
使用现有示例作为框架来熟悉系统是一个好主意,但有一点需要您开始重新定义该示例以执行您需要的工作,这意味着更改变量名称(您可以使用已经适应了其他目的),使它们合乎逻辑,适合于它们包含/用于的内容等。