2013-12-17 115 views
14

我想將包含CSS樣式表的HTML頁面發送到電子郵件帳戶。問題在於CSS樣式表完全不可見。我是否必須內聯每個CSS樣式?這似乎是非常低效的方法。任何其他想法?通過PHP發送包含CSS樣式表的HTML電子郵件通過PHP

下面是發送電子郵件的PHP代碼:

<?php 
$to = "[email protected]"; 

// subject 
$subject = "Test mail"; 

// message 
$message = file_get_contents("index.html"); 

// from 
$from = "[email protected]"; 

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

我將非常感謝您的幫助。提前致謝。

+12

是的,你需要使用內聯CSS。大多數電子郵件服務(如Google)(特別是)會垃圾外部CSS。 –

+9

編寫電子郵件的HTML時,請考慮1996年的互聯網。 – MackieeE

+0

我通常將電子郵件的''中的樣式嵌入到表單中,然後參考內聯元素的類。 – Crackertastic

回答

0

只需將該css代碼嵌入該html-email的<head>即可。

+3

建議使用內聯CSS,因爲並非所有郵件客戶端都支持''中的CSS。 – rybo111

+0

如果我使用'bootstrap'意味着如何添加css?或者如果我添加所有在'內聯格式的CSS??? – Karthi

+0

是的,直接添加它。 – Roman

2

最好只是將<style>塊與其中的所有CSS放在index.html正文中的某處。某些電子郵件客戶端/門戶使用<link rel="stylesheet" type="text/css" href="..." >剪切了標頭中嵌入的所有CSS。因此,不使用內聯CSS可能會導致您的電子郵件顯示爲「破損」,或者僅在@gmail.com帳戶上看起來很糟糕。

1

Google,Outlook,Yahoo所有主要的電子郵件服務提供商都不允許使用CSS外部文件。他們選擇內聯樣式和表格來呈現任何樣式的正確電子郵件信號可能聽起來很古老。

編寫代碼可能很繁瑣,但像https://litmus.com/和envato這樣的公司會幫助解決一些模板和格式問題。

我的2¢:電子郵件提供商不能信任所有正在發送的信息來源,因此這是一種防止惡意代碼的方式。

1

在您的index.html文件中,包含<style>標籤,如下所示。

<style> 
.class{ 
style: attribute; 
} 
</style>"; 

這應該工作,如果沒有,那麼我會建議託管您網站上的樣式表,幷包括類似於索引文件的頭部下方的一個<link>標籤

<link rel='stylesheet' type='text/css' href='http://www.yourstylesheet.com'>"; 

無論是那些方法應該有助於解決您的問題。

+0

這個工作與js代碼一樣嗎? (jQuery和一個js庫) –