ОБНОВЛЕНИЕ: (29.02.12) Итак, я снова столкнулся с этой же проблемой для другого клиента на совершенно другом сервере и хостинговой компании.
Снова, имея скрипт только с mail (), отправляет письмо правильно, без проблем.Затем я добавил код, похожий на тот, что был у меня ниже, и подключил его к PayPal IPN.Каждый раз, когда приходит новый платеж, запускается IPN, данные сохраняются в БД, но функция mail () просто не работает.
Однако я столкнулся с интересной проблемой.Я выполнил тестовый запуск IPN из песочницы paypal с тем же сценарием, и электронное письмо было отправлено.
Это проблема с IPN производства paypals, возможно, из-за способа передачи данных в сценарий?
Любая информация здесь была бы чрезвычайно полезна, поскольку мое текущее решение, использующее cronjobs, небрежно.
END UPDATE
У меня правильно настроен прослушиватель IPN PayPal, поскольку он записывает всеинформация в БД при поступлении нового платежа. Теперь я пытаюсь настроить функцию mail (), которая отправляет мне уведомление по электронной почте о новом платеже.
Я делал это раньше для другого проекта, ноЯ не могу понять, почему это не работает в этот раз.Я не получаю никаких ошибок в error_log, а остальная часть сценария работает нормально.
Я проверил, чтобы убедиться, что сервер действительно отправляет почту с помощью автономного сценария mail ().Я действительно потерян и запутался здесь.
Вот код, который у меня есть:
mail('test@email.com', 'New Order', 'New Order', 'From: support@website.com');
define("_VALID_PHP", true);
require_once('../php/init.php');
$item_number = $_POST['item_number'];
$payment_gross = $_POST['payment_gross'];
$payment_status = $_POST['payment_status'];
$payer_email = $_POST['payer_email'];
$txn_id = $_POST['txn_id'];
if ($payment_status == 'Completed') {
$query = $db->query("SELECT price, id, uid FROM invoice WHERE md5='$item_number'");
$row = $db->fetch($query);
$iid = $row['id'];
$uid = $row['uid'];
if ($row['price'] == $payment_gross){
$invoiceUpdate['paid'] = 1;
$update = $db->update('invoice', $invoiceUpdate, "md5='$item_number'");
}
}
$data['iid'] = $iid;
$data['uid'] = $uid;
$data['payment_status'] = $payment_status;
$data['payer_email'] = $payer_email;
$data['payment_gross'] = $payment_gross;
$data['txn_id'] = $txn_id;
$db->insert('payment', $data);