当我发送 IPN 时,它说它已发送成功。但是,我从未在我的测试电子邮件中收到电子邮件。我的代码有什么问题导致它无法发送?另外,当我准备好向公众开放时,如何将 ToEmail 从 xxx@myemail.com 更改为购买我的物品的个人的电子邮件?我对 PHP 不是很了解,这是我第一次尝试 IPN,但我正在通过他们的网站帮助一家非营利性企业,我在让它工作时遇到了一些麻烦。任何帮助将不胜感激,在此先感谢您。
<?php
//Build the data to post back to Paypal
$postback = 'cmd=_notify-validate';
// go through each of the posted vars and add them to the postback variable
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$postback .= "&$key=$value";
}
// build the header string to post back to PayPal system to validate
$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($postback) . "\r\n\r\n";
// Send to paypal or the sandbox depending on whether you're live or developing
//comment out one of the following lines
//$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);//open the connection
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
// or use port 443 for an SSL connection
//$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
if (!$fp)
{
// HTTP ERROR Failed to connect
//error handling
}
else // if we've connected OK
{
fputs ($fp, $header . $postback);//post the data back
while (!feof($fp))
{
$response = fgets ($fp, 1024);
if (strcmp ($response, "VERIFIED") == 0) //It's verified
{
$ToEmail = 'xxx@myemail.com';
$EmailSubject = 'Subject Here';
$mailheader = "From: ".$_POST['receiver_email']."\r\n";
$mailheader .= "Reply-To: ".$_POST['receiver_email']."\r\n";
$MESSAGE_BODY = "Name: ".$_POST['first_name']."";
$MESSAGE_BODY .= "
I will write my message here.";
$MESSAGE_BODY .= "
Thank you,
MY COMPANY NAME";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader);
}
else if (strcmp ($response, "INVALID") == 0)
{
//the Paypal response is INVALID, not VERIFIED
// This implies something is wrong
}
} //end of while
fclose ($fp);
}
?>