2011-10-21 40 views
2

不知道什么是错,我一定要设置我的标题,所以可能有什么不对。我拥有的邮件是巨大的,所以我把这个小测试者放在一起,当我收到电子邮件时,所有的html标签都存在,但没有格式化发生。我很好奇,如果这是我设置标题的方式有问题,或者我需要更多信息。我搜索了论坛,看起来大多数人遇到的问题是他们没有添加HTML内容类型,但是这里添加了这个内容,所以任何帮助都很棒。我的HTML电子邮件没有被格式化为HTML?

感谢

好了,所以我已经签出一些在线教程
http://www.webhostingtalk.com/showthread.php?t=416467
http://css-tricks.com/2866-sending-nice-html-email-with-php
http://www.w3schools.com/php/func_mail_mail.asp

<?php 
session_start(); 
if (isset($_SESSION['new_count'])) //counts how many fake emails i send myself 
{ 
    $count = $_SESSION['new_count']; 
} 
else 
{ 
    //first time 
    $count = 0; 
} 

$to = '[email protected]'; 
$subject = 'email test'; 
$message = '<html><head></head><body>'; 
$message .= '<h1>this is an email test</h1>'; 
$message .= '<br />does new line work?<br />'; 
$message .= 'how about <b>bold</b> and <strong>strong</strong>?<br />'; 
$message .= '</body></html>'; 
//updated my header to include mime-version 
$mailheader = 'MIME-Version: 1.0' . '\r\n'; 
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . '\r\n'; 
$mailheader .= 'from: [email protected] <[email protected]>' . '\r\n'; 

$yay = mail($to,$subject,$message,$mailheader); 

if($yay) 
{ 
    echo 'woot'; 
    $count++; 
    $_SESSION['new_count'] = $count; 
    echo '<br>Emails Sent: '.$count; 
} 
else 
{ 
    echo 'no woot'; 
} 
?> 

我的头更新到W3建议的形式和其他一些地方。我猜我的头是问题...这仍然输出普通文本不是HTML不知道问题是什么。至于这个脚本的结构,它不是我真正的邮件程序脚本,它是一个带有计数器的测试脚本,所以我知道在测试会话期间需要注意多少封电子邮件。

+5

这不是发送HTML电子邮件的方式。请参阅堆栈溢出的或谷歌的搜索,以了解它是如何完成的 –

+0

Pekka,感谢您的信息。我做了谷歌搜索,并在问我的问题之前查看了一些Stack Overflow的建议主题。我发现的大部分内容都是声明标题的问题,但根据我发布的教程,我的标题看起来应该是这样,对于搞垮了电子邮件的东西感到好奇。 – Brodie

+0

您并未使用“”,“”和“”标签作为初学者。电子邮件客户端很挑剔。 – zzzzBov

回答

5

尝试对您的\ r \ n使用双引号。

$mailheader = 'MIME-Version: 1.0' . "\r\n"; 
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . "\r\n"; 
$mailheader .= 'from: [email protected] <[email protected]>' . "\r\n"; 
+0

+1这很可能是解决方案,因为一切似乎都是按顺序进行的。 – Herbert

+0

这是解决方案,我没有意识到我不得不双引号的返回和换行符。非常感谢。当我尝试发送普通文本电子邮件时,这是否是我的换行符不起作用的原因? – Brodie

+0

是的,任何转义字符都应该用双引号括起来。 –

0

据我所见,“From”应该在“Content-type”之前。最重要的是你不应该需要“MIME”头文件。

1

我建议您使用Swift,这使得使用PHP发送电子邮件变得非常容易。一个更好的解决办法是使用类似Postmarkapp,其中除了具有优异的图书馆,也可以确保您的邮件不会停留在垃圾邮件过滤器等

例与斯威夫特:

require_once 'lib/swift_required.php'; 

//Create the message 
$message = Swift_Message::newInstance() 

    //Give the message a subject 
    ->setSubject('Your subject') 

    //Set the From address with an associative array 
    ->setFrom(array('[email protected]' => 'John Doe')) 

    //Set the To addresses with an associative array 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 

    //Give it a body 
    ->setBody('Here is the message itself') 

    //And optionally an alternative body 
    ->addPart('<q>Here is the message itself</q>', 'text/html') 

    //Optionally add any attachments 
    ->attach(Swift_Attachment::fromPath('my-document.pdf')) 
    ; 
+0

我很感激,我可能会在我的个人网站上使用邮件应用程序/库集成,但我不想在这个客户端网站上有一堆额外的东西,他会非常使用外部脚本免费或不是,不知道为什么。 – Brodie

+0

@Brodie:很抱歉听到这个消息,[这是给你鼓励的东西](http://clientsfromhell.net/):) – Znarkus

+0

这真是太棒了! – Brodie