1

Web ページを通常の PHP メールから PEAR メールに切り替えようとしています。このページでは、Web フォームに電子メールを入力している受信者に電子メールを送信したいと考えています。以下のコードのように、$to を $pickeremail に設定しようとしていますが、残念なことに、PEAR はユーザーが Web フォームに実際に入力した電子メールではなく、「$pickeremail」に電子メールを送信しようとします。 .

$con = mysql_connect("localhost","BLAHBLAH","BLAHBLAH");

mysql_select_db("schoolh_SHS", $con);

if (!$con)
{
  die('Could not connect: ' . mysql_error());
}

$sql      = "UPDATE Donations SET `PICKER_NAME`='$_POST[pickername]',`PICKER_EMAIL`='$_POST[pickeremail]',`PICKER_PHONE`='$_POST[pickerphone]',`STATUS`='CLAIMED' WHERE DONATIONID = $_POST[id]";
$q        = "SELECT * FROM Donations WHERE DONATIONID = $_POST[id]";
$result   = mysql_query($q);
$Donation = mysql_fetch_array($result);

$orgname     = mysql_result($result,$i,"orgname");
$address     = mysql_result($result,$i,"address");
$city        = mysql_result($result,$i,"city");
$state       = mysql_result($result,$i,"state");
$pickeremail = mysql_result($result,$i,"picker_email");

if (!mysql_query($sql,$con))
{
  die('Error: ' . mysql_error());
}

function send_email($recipients, $from, $subject, $body)
{
  require_once "Mail.php";
  require_once "Mail/mime.php";

  $to         = '$pickeremail';
  $cc         = 'whynoceros@gmail.com';
  $recipients = $to.", ".$cc;
  $subject    = 'Pickup Confirmation';
  $from       = 'blah';
  $host       = 'blah';
  $username   = 'donations';
  $password   = 'blahblah';

  $headers = array (
    'From'    => $from,
    'To'      => $to,
    'Subject' => $subject
  );

  $mime = new Mail_mime();
  $mime->setHTMLBody($body);

  $body = $mime->get();
  $headers = $mime->headers($headers);

  $smtp = Mail::factory('smtp', array(
    'host'     => $host, 
    'auth'     => true,
    'username' => $username, 
    'password' => $password
  ));
  $mail = $smtp->send($recipients, $headers, $body);

  if (PEAR::isError($mail))
  {
    //return false;
    echo ($mail->getMessage());
  } 
  else 
  {
    return true; 
  }
}

以下の提案に従って、var_dump を追加しました。

array(6) { ["MIME-Version"]=> string(3) "1.0" ["Content-Type"]=> string(29) "text/html; charset=ISO-8859-1" ["Content -Transfer-Encoding"]=> string(16) "quoted-printable" ["From"]=> string(33) "donations@schoolhousesupplies.org" ["To"]=> string(0) "" [" Subject"]=> string(19) "Pickup Confirmation" } 受信者の追加に失敗しました: @localhost [SMTP: サーバーから受信した無効な応答コード (コード: 501、応答: 5.5.4 無効なアドレス)]NULL

ヘッダー配列に 'To' => $to があることに気付きました。これを 'To' => $recipients に変更しました。行も変更しました: $pickeremail = mysql_result($result,$i,"picker_email"); to:$pickeremail=$_POST['pickeremail']; 今、私はこの var_dump を取得しています: array(6) { ["MIME-Version"]=> string(3) "1.0" ["Content-Type"]=> string(29) "text/html; charset= ISO-8859-1" ["Content-Transfer-Encoding"]=> string(16) "quoted-printable" ["From"]=> string(33) "donations@schoolhousesupplies.org" ["To"]= > string(20) "whynoceros@gmail.com" ["Subject"]=> string(19) "Pickup Confirmation" } 受信者の追加に失敗しました: @localhost [SMTP: サーバーから受信した無効な応答コード (コード: 501,

4

1 に答える 1

2

あなたはここで間違っています:

$to         = '$pickeremail';

単純な引用符を使用すると、内部の php 変数が解釈されないためです。この行を次のように置き換えます。

$to = $pickeremail;

編集:

ダンプを見てください:

["宛先"]=> 文字列(0) ""

に空の文字列を入れ$toます。したがってpicker_email、データベースのフィールドが空であるようです。あなたはそれをチェックする必要があります。

于 2012-07-14T17:49:07.557 に答える