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();

?>
4

2 回答 2

4

好的,我解决了问题。

我已经用 body 函数替换了 $mail->msgHTML($msg) :

$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();

它完美地工作!感谢所有参与者!

于 2012-04-30T19:06:28.750 回答
2

我知道这不是很及时,但我找到了一个替代解决方案:

我有一个类似的问题,但我有一些有效的页面和一些无效的页面。我尝试了您的解决方案,但它给了我相同的结果。

然后我查看了来自工作页面的电子邮件的 html 源代码,并注意到我已经包含了开始和结束 html 和 body 标签,并且我没有将它们包含在非工作页面中。这就是全部,$mail->msgHTML($msg) 为我工作。

希望这可以帮助。

于 2013-05-05T07:20:13.517 回答