通过PHP发送电子邮件中的HTML页面

通过PHP发送电子邮件中的HTML页面,php,html,css,email,Php,Html,Css,Email,我想发送一个HTML页面的电子邮件与图片和CSS样式表使用PHP。如何添加图像和css样式表,而无需将图像上载到服务器 下面是发送电子邮件的PHP代码: <?php $to = "my.account@gmail.com"; // subject $subject = "Test mail"; // message $message = file_get_contents("index.html"); // index.html contains images and css styl

我想发送一个HTML页面的电子邮件与图片和CSS样式表使用PHP。如何添加图像和css样式表,而无需将图像上载到服务器

下面是发送电子邮件的PHP代码:

<?php
$to = "my.account@gmail.com";

// subject
$subject = "Test mail";

// message
$message = file_get_contents("index.html"); // index.html contains images and css stylesheet which are not displayin in the email

// from
$from = "my.account@gmail.com";

// 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";

// Additional headers
$headers .= "From:" . $from;

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

echo "Mail Sent.";
?>

我将非常感谢你的帮助。提前感谢。

对于复杂的电子邮件,您应该使用类似Wonder类的邮件类


有了这个类,可以很容易地发送像HTML邮件这样的复杂邮件。您可以在PHPMailer的examples文件夹中找到示例。

您可以像这样添加发送html文件:

    $file_name = basename($file); // Get file name
$data = file_get_contents($file); // Read file contents 
$file_contents = chunk_split(base64_encode($data)); // Encode file data into base64
$uid = md5(time()); // Create unique boundary from timestamps 
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "From: {$from_name}<{$mail_from}>";
$headers[] = "Reply-To: {$mail_from}";
$headers[] = "Content-Type: multipart/mixed; boundary=\"{$uid}\"";
$headers[] = "This is a multi-part message in MIME format.";
$headers[] = "--{$uid}";
$headers[] = "Content-type:text/plain; charset=iso-8859-1"; // Set message content type
$headers[] = "Content-Transfer-Encoding: 7bit";
$headers[] = $message; // Dump message
$headers[] = "--{$uid}";
$headers[] = "Content-Type: application/octet-stream; name=\"{$file_name}\""; // Set content type and file name
$headers[] = "Content-Transfer-Encoding: base64"; // Set file encoding base
$headers[] = "Content-Disposition: attachment; filename=\"{$file_name}\""; // Set file Disposition
$headers[] = $file_contents; // Dump file
// Send mail with header information
if (mail($mail_to, $subject, '', implode("\r\n", $headers) ))
    return true;

我不认为这真的会起到你想要的作用。大多数电子邮件客户端不会按您的要求显示电子邮件。如果图像不在服务器上,您如何引用该图像?图像必须在服务器上。使用图像的绝对路径&您需要放置内联样式,因为在电子邮件中不支持应用CSS。我猜您的意思是,然后您想作为附件发送?不要。你的电子邮件将被每一个垃圾邮件过滤器接收。我使用的是相对路径,目前我不能使用绝对路径,是的,我正在考虑附加图像。OP要求的是图像引用,而不是如何发布HTML电子邮件。“我想发送HTML页面”-听起来他想发送一封包含图片的HTML电子邮件。PHPMailer是一个很好的方法。我如何添加我的图像和css样式表而不将图像上传到服务器?因为我使用的是相对路径,目前我不能使用绝对路径