PHPからEMLファイルを生成しようとしています。簡単に作成できるライブラリはありますか?インターネット上でActiveXコンポーネントを見つけることができましたが、もっとポータブルなものを使用したいと思います。
3 に答える
この種のテンプレートを使用して自分でMIMEメッセージを作成することになりました。このテンプレートでは、各フィールドがTEMPLATE_<name>
変数に置き換えられています。
From: TEMPLATE_FROM_ADDRESS
MIME-Version: 1.0
To: TEMPLATE_TO_ADDRESS
Subject: TEMPLATE_SUBJECT
Content-Type: multipart/mixed; boundary="080107000800000609090108"
This is a message with multiple parts in MIME format.
--080107000800000609090108
Content-Type: text/plain
TEMPLATE_BODY
--080107000800000609090108
Content-Type: application/octet-stream;name="TEMPLATE_ATTACH_FILENAME"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;filename="TEMPLATE_ATTACH_FILENAME"
TEMPLATE_ATTACH_CONTENT
--080107000800000609090108
次に、次を使用して最終的なメッセージを作成するのは非常に簡単str_replace
です。
$content = file_get_contents("Template.eml");
$content = str_replace("TEMPLATE_FROM_ADDRESS", $fromEmail, $content);
$content = str_replace("TEMPLATE_TO_ADDRESS", $toEmail, $content);
// etc. for each template parameter
// Also don't forget to base64_encode the attachment content;
$content = str_replace("TEMPLATE_ATTACH_CONTENT", base64_encode($attachContent), $content);
この投稿のファイル添付ファイルに関する追加情報:添付ファイル名とファイル拡張子が電子メールで機能しない* .eml
編集(2018):この回答が書かれているので、どこにでもコピーして貼り付けられているようです。特にテンプレートです。他のMIMEデータとの競合を回避するには、境界「080107000800000609090108」が一意であることを確認する必要があります。これは、70文字以下のランダムな文字列です。
図書館は必要ないと思います。プレーンテキストです(例: http: //bitdaddys.com/example1.eml)
Date: Sat, 12 Aug 2006 14:25:25 -0400
From: John Doe <jdoes@someserver.com>
Subject: BitDaddys Software
To: sales@bitdaddys.com
Dear BitDaddys Corp.,
We have added your software to our approved list.
Thank you for your efforts.
Sincerely,
John Doe
Some Server Company
ヘッダー付きのテキストを出力し、fwriteを使用して保存することができます。添付ファイルについては、ここbase64_encode()
に記載されているように使用してください
$ part_numberをnullにして、imap_savebody(imapライブラリhttp://us1.php.net/manual/en/function.imap-savebody.phpの一部)を使用します。メッセージ全体を含む1行のコードで美しい.emlファイルを作成します(null $ part_number =すべての部分...文書化されていませんが機能します)。
他の2つのソリューションは、電子メールの形式によって異なります(最初のソリューションでは、添付ファイルが1つだけで、HTMLセクションはなく、2番目のソリューションではテキスト電子メールのみです)。
imap_savebodyは、受信メールの形式に関係なく、完全な.emlファイルを作成します(もちろんRFCに苦情がある限り)。