2013-01-23 10 views
7

私が働いているクライアントは、PHP4.0上で実行される非常に大きなまだ古いシステムを使用しています。追加のライブラリを追加したくない。PHP4のメールに添付ファイルAND text/htmlを送信するために

添付ファイルとテキスト/ HTMLコンテンツの両方を含むPHPを使用して電子メールを送信しようとしていますが、1つのメールで両方を送信できません。

この

は、添付ファイルを送る:

$headers = "Content-Type: text/csv;\r\n name=\"result.csv\"\r\n Content-Transfer-Encoding: base64\r\n Content-Disposition: attachment\r\n boundary=\"PHP-mixed-".$random_hash."\""; 
$output = $attachment; 

mail($emailTo, $emailSubject, $output, $headers); 

この送信テキスト/ HTML:

$headers = "Content-Type: text/html; charset='iso-8859-1'\r\n"; 
$output = $emailBody; // $emailBody contains the HTML code. 

これは、アタッチメントの内容とともにテキスト/ HTMLを含む添付ファイルを送信します

$headers = "Content-Type: text/html; charset='iso-8859-1'\r\n".$emailBody."\r\n"; 
$headers = "Content-Type: text/csv;\r\n name=\"result.csv\"\r\n Content-Transfer-Encoding: base64\r\n Content-Disposition: attachment\r\n boundary=\"PHP-mixed-".$random_hash."\""; 
$output = $attachment; 

私が知る必要があるのは、電子メール本文にtext/htmlの電子メールを送信し、その添付ファイルを追加する方法です。私はここで本当に簡単なものが欠けていると確信しています!

ありがとうございます。

+1

'multipart'メールの送信を検索します。 [一例がここにあります](http://kevinjmcmahon.net/articles/22/html-and-plain-text-multipart-email-/)。この例は、text/htmlとtext/plainの部分がありますが、必要に応じて変更することができます。 – RikkusRukkus

+0

もしそうなら、PHPを更新することができます。 PHP4はあまりにも古く、もはや私が知らされていない限り、それ以上のメンテナンスは行われていないので、PHP4ブランチでもセキュリティの修正は行われません。最後のPHP4アップデートは2008年にリリースされました! –

+3

完全に率直なことに、顧客が「私はPHP 4.0を使用しており、私はアップグレードする準備ができていません」と言った場合、私は彼らのプロジェクトに取り組む準備ができていないと言います。 – SDC

答えて

14

さて、私は最終的にそれを割れてきました参考:。!

$emailBody .= "<html><body>Blah</body></html>"; 
$emailSubject = "Subject"; 
$emailCSV = "\"Col1\", \"Col2\"\r\n"; // etc. 
$attachment = $emailCSV; 

$boundary = md5(time()); 

$header = "From: Name <[email protected]>\r\n"; 
$header .= "MIME-Version: 1.0\r\n"; 
$header .= "Content-Type: multipart/mixed;boundary=\"" . $boundary . "\"\r\n"; 

$output = "--".$boundary."\r\n"; 
$output .= "Content-Type: text/csv; name=\"result.csv\";\r\n"; 
$output .= "Content-Disposition: attachment;\r\n\r\n"; 
$output .= $attachment."\r\n\r\n"; 
$output .= "--".$boundary."\r\n"; 
$output .= "Content-type: text/html; charset=\"utf-8\"\r\n"; 
$output .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; 
$output .= $emailBody."\r\n\r\n"; 
$output .= "--".$boundary."--\r\n\r\n"; 

mail($emailTo, $emailSubject, $output, $header); 
2

PHP mail()機能を使用して添付ファイルを送信しようとすると、不満の練習です。単純に言えば、それは努力に値するものではありません。私は決してでも、現在のPHPバージョンでさえそれを試してみることをお勧めしません。私はいつもphpMailerのようなライブラリを使います。

私は、サードパーティのライブラリを使用することは許されていないとお知りになりましたが、この場合、使用しないことに夢中になります。私たちは仕事の1日と1年の違いについて話しています。それは大きな問題です。 PHP mail()の機能は非常に難しく、コードを書いて添付ファイルを一から送信しようとすると、永遠にすべてのケースで確実に動作するようになる脆弱なバグのコードが残されます。これがphpMailerのようなライブラリが存在する理由です。

あなたが何をしたいかにかかわらず、phpMailerをダウンロードしてください - PHP4バージョンはまだ利用可能です - あなたのために動作するかどうかを確認してください。 (ダウンロードページにはまだの古いバージョンがあるので、PHP 4.0で動作するものを見つけるために十分な時間を取ることができるはずです。簡単なデモを手に入れてはいけません

(それがスタンスを柔らかくしないと、このプロジェクトがこれまでに決まったことで完了することはあまり期待できません。時間の量その場合、あなたができる最善のは、プロジェクトの価格とグリットあなたの歯のためにあなたの引用にいくつかの余分なゼロを追加している)

関連する問題