2012-04-29 2 views
0

Я спрашиваю здесь, потому что у меня не было ответа от OVH (мой хостинг). В этом случае: Если я заменил $ mail-> MsgHTML ($ msg) на $ mail-> MsgHTML ($ _ POST ['message']), я получаю почту мгновенно с заголовками, именем, электронной почтой, темой и сообщение. Но когда я ставлю $ msg, я не получаю почты.

$msg='Name:'.$_POST['name'].'<br /> 
Email:'.$_POST['email'].'<br /> 
Subject: '.$_POST['subject'].'<br /> 
IP:'.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 

'.nl2br($_POST['message']).' 

'; 

весь PHP (от FancyAJAXForm):

<?php 
/* config start */ 

$emailAddress = 'my mail address'; 

/* config end */ 

require "class.phpmailer.php"; 

foreach($_POST as $k=>$v) 
{ 
if(ini_get('magic_quotes_gpc')) 
$_POST[$k]=stripslashes($_POST[$k]); 

$_POST[$k]=htmlspecialchars(strip_tags($_POST[$k])); 
} 


$msg='Name:'.$_POST['name'].'<br /> 
Email:'.$_POST['email'].'<br /> 
Subject: '.$_POST['subject'].'<br /> 
IP:'.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 

'.nl2br($_POST['message']).' 

'; 

$mail = new PHPMailer(); 
$mail->IsMail(); 

$mail->AddReplyTo($_POST['email'], $_POST['name']); 
$mail->AddAddress($emailAddress); 
$mail->SetFrom($_POST['email'], $_POST['name']); 
$mail->Subject = "Contact Form: ".mb_strtolower($_POST['subject'])." from ".$_POST['name'].""; 

$mail->MsgHTML($msg); 

$mail->Send(); 

?> 
+0

Вы можете опубликовать вывод 'var_dump ($ msg)' – ilanco

+0

Вы проверили возвращаемое значение 'Send()'? Вы проверили папку со спамом? Вы посмотрели заголовки сообщения электронной почты, которое прошло (должна быть какая-то информация о пути, который занимает электронная почта, некоторые ретрансляционные серверы более разборчивы, чем другие, о том, что они проходят)? – DCoder

+0

@ilanco: var_dump ($ тзд) возвращение: "Имя: Email: Тема: IP: ** мой IP Сообщение: " DCoder: Как я уже сказал, я получаю почту, когда я заменяю MsgHTML ($ msg) по MsgHTML ($ _ POST ['message']); – unK

ответ

4

Ok Я получил эту проблему решить.

я заменить $ mail-> msgHTML ($ тзд) с функцией тела:

$mail->IsHTML(true); 
$mail->Body='Name: '.$_POST['name'].'<br /> 
Email: '.$_POST['email'].'<br /> 
Sujet: '.$_POST['subject'].' 
<br /><br /> 

'.nl2br($_POST['message']).' 

<br /><br /> 
Browser: '.$_SERVER['HTTP_USER_AGENT'].'<br /> 
IP: '.$_SERVER['REMOTE_ADDR'].'<br /> 
'; 

$mail->Send(); 

Он отлично работает! Спасибо всем участникам!

+3

, так как у вас есть решение, отметьте его как принятое, щелкнув значок галочки. это поможет любому, кто ищет аналогичный ответ в будущем. – Spudley

2

Я знаю, что это не совсем своевременно, но я нашел альтернативное решение:

У меня была аналогичная проблема, но у меня было несколько страниц, которые работали и некоторые, которые не сделали. Я попробовал ваше решение, но это дало мне те же результаты.

Затем я просмотрел источник html электронных писем с рабочих страниц и заметил, что я включил открывающие и закрывающие теги html и body, и я не включил их в нерабочие страницы. Это все, что нужно, и для меня работало $ mail-> msgHTML ($ msg).

Надеюсь, это поможет.

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