-1

ユーザーがデバイスをサブスクライブできるように、サイトにフォームを実装しています。jquery.easing.js を使用して、他のフィールドが正しいときに特定のフィールドのみを表示します。JavaScriptも入力を検証しています。

sumbit に関しては、PHP スクリプトに 2 つのフィールドを送信して、サブスクリプション付きの電子メールを送信できるようにします。

フォームは機能していますが、メールが届かないだけです。調査しましたが、解決策が見つかりません。誰か助けてくれませんか?

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;
});

Subscribe.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

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

Ross が述べたように、POST メソッドを使用して変数を渡す場合は、$_POST を使用してそれらにアクセスします。$_REQUEST は使用しないでください。また、dataString 変数が正しくありません。& を忘れています。次のようにする必要があります。

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

メールを送信しているようですが、サーバーを通過させていません。

PHPMailer icm SMTP を使用している場合。Gmail の smtp 設定を使用していますが、subscribe.php を有効にすると次のメッセージが返されます。

メッセージを送信できませんでした。エラー: SMTP Connect() が失敗しました。

`$mac = トリム($_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

ここで何がうまくいかないのですか(私は共有ホスティングを利用しています)

于 2013-09-02T08:30:58.360 に答える