PHP邮件包含HTML不能正确显示
问题描述:
这里是我一直在努力的一些代码,基本上我需要设置一个自动电子邮件发送给用户后,他们填写表单,目前它正在做,但HTML不显示,因为它应该在电子邮件客户端内。PHP邮件包含HTML不能正确显示
我检查了Gmail,Outlook和Mac邮件,但都没有正确显示HTML。
下面是代码
<?php
session_start();
$_SESSION['name'] = $_POST['name'];
$name = $_SESSION['name'];
$email_1 = $_POST['email_1'];
$email_2 = $_POST['email_2'];
$email_3 = $_POST['email_3'];
$email_4 = $_POST['email_4'];
$id_num = $_POST['id_num'];
$tel = $_POST['tel'];
$email = $_POST['email'];
//sets the current date
$curDate = date("Y-m-d");
// Example
require_once("mailclass/htmlMimeMail.php");
$mail = new htmlMimeMail();
$mail->setSubject("Your submission to MyWebsite!");
$mail->setFrom("MyWebsite <[email protected]>");
$mail->setFrom("MyWebsite <[email protected]>");
$email_address = $email_1 . "," . $email_2 . "," . $email_3 ."," . $email_4 ;
$mail->setBcc($email_address);
$day = "
<body style="'background: #000000; color: #FFFFFF;'">
<div style="'background-image: url(http://www.website.com/images/mailerbg.jpg); width: 900px; height: 839px; margin: 0 auto;'">
<div style="'width: 620px; height: 280px; position: relative; top: 155px; left: 25px;'">
<h1><br>your friend $name<br><br><br></h1>
</div>
</div>
</body>";
$mail->setHTML($day);
$result = $mail->send(array());
?>
的代码是相当混乱,从我与它胡闹了这么多,但一旦消息的到达,因为它应该在电子邮件客户端基本没有HTML的显示出来它是目的地,我怎样才能让它在邮件客户端内部显示为一个合适的HTML页面?
我假设我的转义没有正确完成,这就是为什么没有显示它应该如此?
Thanx提前!
答
显示PHP代码在这种情况下是无用的。我们需要看到最终生成的电子邮件。
什么引人注目,虽然是一些错误引用:
<body style="'background: #000000; color: #FFFFFF;'">
应该
<body style="background: #000000; color: #FFFFFF;">
也许能解决它了。
另外,根据this great guide,电子邮件几乎不支持定位 - 这也可能会干扰布局。
不错的anwser,但请记住,使用pekka的代码时,你必须使用单引号的decleration($ day ='';) – Flatlin3 2010-03-29 21:07:03
@Tim好眼睛!我想知道OP的代码如何工作,所有嵌套的双引号? – 2010-03-29 21:13:44
这也是我跳出来的。只需要添加一下,如果你想逃避这些双引号,只需在引号之前加一个反斜杠,就像这样:#000000; color:#FFFFFF;'' 这样,当你输入双引号时,你不会过早地关闭你的HTML主体字符串。或者,像Tim说的那样,你可以把整个字符串括在单引号中,并使用双引号,就像普通的引号一样,反之亦然。 – 2010-03-29 22:23:45