-1

我们正在我们的网站上实施一个表格,让人们订阅他们的设备。我们使用 jquery.easing.js 仅在其他字段正确时显示某些字段。javascript 也在验证输入。

现在谈到 sumbit,我们想向我们的 PHP 脚本发送两个字段,以便它可以向我们发送带有订阅的电子邮件。

表格有效,只是我们没有收到电子邮件。我们已经调查过了,但找不到解决方案。有人可以帮助我们吗?

Javascript(提交部分):

$('#submit').click(function(e)
{
e.preventDefault();
var mac=$("#mac").val();
var store=$("#store").val();
//alert(mac);
//alert(store);
//
var dataString = 'mac=' + mac + 'store=' +store;
$.ajax({
type: 'POST',
url: 'ajax/subscribe.php',
data: dataString,
success: function(data) {
  $("#optoutform").show().html("<h3>You have successfully opted-out.</h3>");
},
error: function(data) {
  $("#optoutform").show().html("<h3>There was an error processing your request.</h3>");
}
});
return valid;
});

订阅.php

$to = "request@domain.com"; 
$subject = "Request"; 
$mac = $_REQUEST['#mac'] ;
$store = $_REQUEST['#store'] ; 
$headers = "From: request@domain.com"; 
$sent = mail($to, $subject, $mac, $store, $headers) ; 

更新:

好的,我已将 subscribe.php 编辑为:

$to = "request@domain.com";
$subject = "Request";
$message = "<h1>Request</h1>";
$message .= "<strong>MAC</strong>: POST_$mac";
$message .= "<strong>Store</strong>: POST_$store";
$headers  = "From:youremail@domain.com";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html\r\n";
$sent = mail($to, $subject, $mail_body, $headers);

并根据 POST 将 dataString 更改为正确的,但仍然没有电子邮件发送到我们的收件箱...

我们还能做错什么?

4

5 回答 5

0

用于 POST 方法

var dataString = {'mac':mac,'store':store};

对于 GET 方法使用

var dataString = 'mac=' + mac + '&store=' + store;
于 2013-09-01T17:04:46.427 回答
0

It seems that it is sending the mail, but not letting through the server.

If I am using PHPMailer icm SMTP. I am using gmail smtp setting and get this message back when activating subscribe.php:

Message could not be sent. Error: SMTP Connect() failed.

`$mac = trim($_POST['mac']); $store = trim($_POST['store']);

$body = '<p>'.$mac.'<br />';
$body .= $store.'</p>';

require($_SERVER['DOCUMENT_ROOT']."/include/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // vertel de class om SMTP te gebruiken
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";    
$mail->Host = 'smtp.gmail.com'; // SMTP server
$mail->Port = 465; // SMTP poort
$mail->Username = 'username@gmail.com';  // eigen gmail-adres
$mail->Password = 'password';  // gmail wachtwoord

What is going wrong overhere (I am on shared hosting)

于 2013-09-02T08:30:58.360 回答
0

您的 dataString 不正确,您忘记了 vars 之间的“&”:

var dataString = 'mac=' + mac + '&store=' + store;

另外,不需要字符串,只需传递一个对象,jQuery 将完成剩下的工作:

$.ajax({
    type: 'POST',
    url: 'ajax/subscribe.php',
    data : {mac: mac, store: store},
    etc...
于 2013-09-01T16:55:52.623 回答
0

正如罗斯所说,如果您使用 POST 方法传递变量,请使用 $_POST 访问它们。不要使用 $_REQUEST。此外,您的 dataString 变量不正确,您忘记了 &,它应该是:

var dataString = 'mac=' + mac + '&store=' +store;
于 2013-09-01T16:55:59.943 回答
0

您的 PHP 请求中不需要标签。改变

$mac = $_REQUEST['#mac'] ;
$store = $_REQUEST['#store'] ; 

$mac = $_REQUEST['mac'] ;
$store = $_REQUEST['store'] ; 

在设置另一个变量之前你还需要 & 符号,所以改变

var dataString = 'mac=' + mac + 'store=' +store;

var dataString = 'mac=' + mac + '&store=' +store;
于 2013-09-01T17:12:39.317 回答