2016-03-16 3 views
1

Я пытаюсь получить функцию mail() PHP для работы, отправив JSON в response.php, который обрабатывает фактическую отправку. После многочисленных попыток я все еще не получаю сообщение получателю. Проблема я получаю сейчас, что сообщение должно быть RFC 5322 совместимый:Ошибка обработки почты PHP()

[email protected] 
host mx2.hotmail.com [65.54.188.72] 
SMTP error from remote mail server after end of data: 
550 5.7.0 (BAY004-MC1F14) Message could not be delivered. Please ensure the message is RFC 5322 compliant. 

выход Сообщение от сценария:

asdada\r\n\nName: Www\r\nEmail: [email protected] 

(Имейте в виду, что я просто нажать несколько кнопок . после того, как тысячи раз попыток, так что сообщение не делает чувство) я использовал пример на PHP Manual:MAIL() для создания заголовков, так что они выглядят так:

$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

Когда я смотрю сообщение, полученное из системы доставки почты, заголовки, похоже, заказывают. Сообщение, однако, похоже, запуталось в этом процессе, что привело к сбою доставки почты.

Кто-нибудь знает, почему это может произойти? Пожалуйста, дайте мне знать, если мне нужно загрузить больше кода/примеров.

EDIT: Забыл упомянуть, что я уже пытался добавить пятый параметр функции почты():

mail($to,$subject,$message,$headers,"-f [email protected]"); 

как предложено here EDIT 2: код, который я использую для функции почты():

//Send Mail 

    $to = "[email protected]"; // Your email here 
    $path = $_SERVER['HTTP_HOST']; 
    $subject = 'Message from ' . $path; // Subject message here 
    $email = $return["email"]; 
    //Set headers 
    $headers = 'From: ' . $email .''. '\r\n'. 
    'Reply-To: '.$email.'' . '\r\n' . 
    'X-Mailer: PHP/' . phpversion(); 
    $message = $return['msg'] . '\r\n\n' .'Name: '.$return['name']. '\r\n' 
    .'Email: '.$return['email']; 
    mail($to, $subject, $message, $headers,"-f [email protected]"); 

за $ возвращение массива используется для кодирования в формат JSON, он содержит только строковые значения

+0

Вы должны опубликовать полный или больше кода. Недостаточно кода. Покажите нам, что вы используете. –

+2

'mail' не очень хорошо, я бы рекомендовал вместо этого решить эту проблему, вместо этого используя PHPMailer: https://github.com/PHPMailer/PHPMailer – Martin

+0

Спасибо! Я попробую. –

ответ

3

Обратите внимание на одинарные кавычки для всех ваших '\r\n'? и '\r\n\n'

Неправильно интерпретированы/проанализированы и заключены в двойные кавычки "\r\n" и "\r\n\n".

Обратитесь к руководству по mail():

нигде не руководство предлагает использовать одиночные кавычки для \r\n, но только для mail('[email protected]', 'My Subject', $message); и несколько других примеров, но не для \r\n-х гг.

  • Прочтите руководство еще раз. Все \r\n имеют двойные кавычки вокруг них, а не одинарные кавычки.

Как предложено Мартином в комментариях, PHPMailer - хорошая программа для использования, как и Swiftmailer.

Ссылки:

+0

Спасибо, что указали, что, к сожалению, это не решает мою проблему, поэтому что-то еще должно быть неправильным. Я не получаю сообщение с доставкой по электронной почте или сейчас, поэтому я поеду с PHPmailer (как предложил Мартин) или Swiftmailer. –

+0

@WouterPol Добро пожаловать. * Hm .... *, это самый причудливый. Я бы попробовал другое тестирование, используя фактический пример PHP.net, и никоим образом не изменял его. Я уверен, что это сработает. Тем не менее, PHPMailer/Swiftmailer - хорошие программы для использования, конечно. * Cheers * –

+0

Пробовал это, чтобы убедиться, что мой php.ini сервера в порядке. Голый пример работал как шарм, так что это моя ошибка (конечно). Если я узнаю, в чем была ошибка, я обязательно обножу свой пост. Cheers –

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