2009-12-31 83 views
3

发送网页,如ASP,我们有功能,在邮件发送完整的网页,基本上节省大量的时间用于开发人员创建&发送电子邮件通过电子邮件在PHP

看到下面的代码

 <% 
    Set myMail=CreateObject("CDO.Message") 
    myMail.Subject="Sending email with CDO" 
    myMail.From="[email protected]" 
    myMail.To="[email protected]" 
    myMail.CreateMHTMLBody "mywebpage.html",cdoSuppressNone 
    myMail.Send 
    set myMail=nothing 
    %> 

因为我们知道CreateMHTMLBody将从mywebpage.html获取数据并将其作为电子邮件的主体发送。

我想知道是否有任何功能像(CreateMHTMLBody)这是在PHP中可用?

如果是,我们是否可以打包任何功能,请给我一些提示。

感谢

回答

6

例子:(!或远程)

<? 
    if(($Content = file_get_contents("somefile.html")) === false) { 
     $Content = ""; 
    } 

    $Headers = "MIME-Version: 1.0\n"; 
    $Headers .= "Content-type: text/html; charset=iso-8859-1\n"; 
    $Headers .= "From: ".$FromName." <".$FromEmail.">\n"; 
    $Headers .= "Reply-To: ".$ReplyTo."\n"; 
    $Headers .= "X-Sender: <".$FromEmail.">\n"; 
    $Headers .= "X-Mailer: PHP\n"; 
    $Headers .= "X-Priority: 1\n"; 
    $Headers .= "Return-Path: <".$FromEmail.">\n"; 

    if(mail($ToEmail, $Subject, $Content, $Headers) == false) { 
     //Error 
    } 
?> 
+1

虽然有效,但并不完美。有没有办法让图片和CSS布局被提取的页面的某种“照片”? 我搜索了一个php库,但找不到任何东西。 – kevin 2010-04-26 15:16:52

1

方法如下:

$to = '[email protected]'; 
$subject = 'A test email!'; 

// To send HTML mail, the Content-type header must be set 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

// Put your HTML here 
$message = '<html><body>hello world</body></html>'; 

// Mail it 
mail($to, $subject, $message, $headers); 

你刚刚发送的HTML电子邮件。加载外部HTML文件替换$消息=“”:下面

$message = file_get_contents('the_file.html'); 
3

为了增加Erik的答案,如果你要导入一个本地文件而不是指定的代码本身的HTML,你可以这样做:

// fetch locally 
$message = file_get_contents('filename.html'); 

// fetch remotely 
$message = file_get_contents('http://example.com/filename.html'); 
3

使用PHP的输出缓冲功能,包括所需的网页。例如:

// Start output buffering 
ob_start(); 

// Get desired webpage 
include "webpage.php"; 

// Store output data in variable for later use 
$data = ob_get_contents(); 

// Clean buffer if you want to continue to output some more code 
// in which case it would make sense to use this functionality in the very beginning 
// of your page when no other code has been processed yet. 
ob_end_clean();