Самый простой способ - создать CSV-файл, доступный для чтения в Excel.
По сути, это список значений, разделенных запятыми. Каждая строка представляет строку.
Первая строка может содержать заголовки столбцов, например:
$string = '"Organisation","Address","Postcode"' . PHP_EOL;
$string .= "\"$member_organ_field\",\"$member_address_field\",\"$member_post_field\"" . PHP_EOL;
file_put_contents('myfile.csv', $string); // write file
Обязательно заключайте в кавычки имена и значения полей как пустые без кавычек, (запятая) испортит ваши столбцы.
В противном случае есть библиотека PEAR для записи в файлы Excel.
Вы можете отправить по электронной почте файл как вложение, используя встроенную почтовую функцию , , см. Пример здесь
Или используя Swift Mailer , , см. Пример здесь
UPDATE
Это общая суть того, что вам нужно, код может быть не идеальным, пожалуйста, прочтите его и не копируйте и не вставляйте.
<?php
$random_hash = md5(date('r', time()));
$csvString = "..."; // your entire csv as a string
$attachment = chunk_split(base64_encode($csvString));
$to = "to@me.com";
$from = "from@you.com";
$subject = "my subject";
$body = "... what ever you want to appear in the body";
$headers = "From: $from\r\nReply-To: $from";
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
$output = "
--PHP-mixed-$random_hash;
Content-Type: multipart/alternative; boundary='PHP-alt-$random_hash'
--PHP-alt-$random_hash
Content-Type: text/plain; charset='iso-8859-1'
Content-Transfer-Encoding: 7bit
$body
--PHP-mixed-$random_hash
Content-Type: text/csv; name=mycsv.csv
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--PHP-mixed-$random_hash--";
mail($to, $subject, $output, $headers);
echo "Thank you for your account application, we will contact you shortly.";
?>