2012-06-13 2 views
1

У меня очень странная проблема при отправке писем. Это, вероятно, что-то очень просто исправить, но я не могу найти ответы в Интернете.php mail() не отправляет заголовки при использовании phonegap и ajax

Мой Аякса в моем приложении JQuery Mobile PhoneGap есть (упрощенно):

$.ajax({ 
    url: 'http://mysite.com/ajax/app/email.php', 
    type: "POST", 
    dataType: "text", 
    data: { 
     email: $('#email').val(), 
    }, 
    success: function(data) { 
     alert('done!') 
    } 
}); 

код в моем файле email.php это (опять же, упрощенный):

<?php 
$email = $_POST['email']; 
$headers = 'From: MySite <[email protected]>' . "\r\n" . 
    'Reply-To: MySite <[email protected]>' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 
$msg = "Welcome to MySite!"; 
@mail($email, 'Hello', $msg, $headers); 

Электронная почта приходит через отлично, но вместо того, чтобы быть с [email protected], это от [email protected] Письмо приходит от правильного адреса электронной почты, когда я запускаю тот же ajax-запрос из приложения HTML5, хранящегося на том же сервере, что и скрипт email.php.

Любые идеи? У меня есть whitelisted myserver + все поддомены - я не могу думать, что еще делать.

+0

Сначала попробуйте '@mail ($ email, 'Hello', $ msg, $ headers, '[email protected]');' и посмотрим, делает ли это трюк. – drew010

+0

Отлично! Это сделало трюк после того, как я добавил пятый параметр и установил безопасный режим в положение «Выкл.», Чтобы разрешить его (у меня есть ужасный хост, который по-прежнему использует безопасный режим ...) Приветственный приятель – whizzkid

+0

Отлично, я добавил его в качестве ответа, так что если вы получите шанс, вы можете принять его. Благодаря! – drew010

ответ

1

Попробуйте передать свой адрес электронной почты с помощью флага -f через пятый параметр до mail(). Это поможет MTA узнать, какой адрес использовать в качестве отправителя конверта.

Смотрите, если этот код работает:

mail($email, 'Hello', $msg, $headers, '[email protected]'); 

Обратитесь к ссылке почты выше для получения информации о функции PHP почты(), а также поиск -f на The Exim Command Line от Exim Docs.

Вам необходимо отключить safe_mode, если он включен в вашей версии PHP.

Смежные вопросы