PHPを使用してWord文書をメールマージする方法


  1. ライブラリのインストール: PHPでWord文書を操作するためには、PHPWordというライブラリを使用します。まず、PHPWordをインストールします。以下のコマンドを使用して、Composerを介してインストールします。
composer require phpoffice/phpword
  1. テンプレートの作成: メールマージするWord文書のテンプレートを作成します。テンプレートには、組み込む変数やプレースホルダを含めることができます。例えば、{name}というプレースホルダを作成します。

  2. データの準備: メールマージに使用するデータを準備します。例えば、名前やメールアドレスなどのデータを含む配列やデータベースからデータを取得します。

  3. メールマージの実行: PHPWordを使用して、テンプレートの変数を実際のデータで置換し、新しいWord文書を生成します。以下のコード例を参考にしてください。

require_once 'vendor/autoload.php';
use PhpOffice\PhpWord\TemplateProcessor;
$template = new TemplateProcessor('path/to/template.docx');
// データの置換
$template->setValue('name', 'John Doe');
$template->setValue('email', '[email protected]');
// 新しい文書の保存
$template->saveAs('path/to/output.docx');

上記の例では、path/to/template.docxがテンプレートのパスを示しており、path/to/output.docxが生成される新しい文書の保存先です。setValueメソッドを使用して、テンプレート内のプレースホルダを実際のデータで置換します。

  1. メールの送信: 生成されたWord文書をメールに添付して送信する方法は、メール送信の方法やライブラリに依存します。例えば、PHPの組み込み関数であるmail関数を使用してメールを送信することができます。
$to = '[email protected]';
$subject = 'メールマージされた文書';
$message = 'メールの本文';
$from = '[email protected]';
// メールのヘッダ
$headers = "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"boundary\"\r\n";
// メールの本文
$body = "--boundary\r\n";
$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $message . "\r\n";
// 添付ファイルの追加
$file = 'path/to/output.docx';
$fileContent = file_get_contents($file);
$body .= "--boundary\r\n";
$body .= "Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document; name=\"output.docx\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"output.docx\"\r\n\r\n";
$body .= chunk_split(base64_encode($fileContent)) . "\r\n";
// メールの送信
mail($to, $subject, $body, $headers);

上記の例では、[email protected]に送信先のメールアドレス、[email protected]

PHPを使用してWord文書をメールマージする方法について説明します。以下に、シンプルで簡単な手順とコード例を示します。

  1. ライブラリのインストール: PHPでWord文書を操作するためには、PHPWordというライブラリを使用します。まず、PHPWordをインストールします。以下のコマンドを使用して、Composerを介してインストールします。
composer require phpoffice/phpword
  1. テンプレートの作成: メールマージするWord文書のテンプレートを作成します。テンプレートには、組み込む変数やプレースホルダを含めることができます。例えば、{name}というプレースホルダを作成します。

  2. データの準備: メールマージに使用するデータを準備します。例えば、名前やメールアドレスなどのデータを含む配列やデータベースからデータを取得します。

  3. メールマージの実行: PHPWordを使用して、テンプレートの変数を実際のデータで置換し、新しいWord文書を生成します。以下のコード例を参考にしてください。

require_once 'vendor/autoload.php';
use PhpOffice\PhpWord\TemplateProcessor;
$template = new TemplateProcessor('path/to/template.docx');
// データの置換
$template->setValue('name', 'John Doe');
$template->setValue('email', '[email protected]');
// 新しい文書の保存
$template->saveAs('path/to/output.docx');

上記の例では、path/to/template.docxがテンプレートのパスを示しており、path/to/output.docxが生成される新しい文書の保存先です。setValueメソッドを使用して、テンプレート内のプレースホルダを実際のデータで置換します。

  1. メールの送信: 生成されたWord文書をメールに添付して送信する方法は、メール送信の方法やライブラリに依存します。例えば、PHPの組み込み関数であるmail関数を使用してメールを送信することができます。
$to = '[email protected]';
$subject = 'メールマージされた文書';
$message = 'メールの本文';
$from = '[email protected]';
// メールのヘッダ
$headers = "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"boundary\"\r\n";
// メールの本文
$body = "--boundary\r\n";
$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $message . "\r\n";
// 添付ファイルの追加
$file = 'path/to/output.docx';
$fileContent = file_get_contents($file);
$body .= "--boundary\r\n";
$body .= "Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document; name=\"output.docx\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"output.docx\"\r\n\r\n";
$body .= chunk_split(base64_encode($fileContent)) . "\r\n";
// メールの送信
mail($to, $subject, $body, $headers);

上記の例では、[email protected]に送信先のメールアドレス、[email protected]に送信元のメールアドレスを指定します。また、メールの本文や件名なども適宜変更してください