2013-03-06 1 views
1

У меня есть длинный список Excel, который содержит имена пользователей, почтовые адреса и PIN-код. Я хочу, чтобы произвести автоматическое письмо как «Дорогой $name, ваш ПИН-код $pin» и отправить $mail где $name, $mail и $pin переменные будет поступать из файла первенствовать .. (есть три колонки)PHP отправить почту в список Excel

Может ли один пожалуйста, поделитесь идеей или образцом кода?

EDIT For bounty Вот экранный отпечаток моего файла csv. Я хочу читать данные как двухмерный массив из файла csv и заполнять электронное письмо.

my csv file

+2

Существуют ли определенные проблемы, которые у вас возникают? Это одноразовое или что-то, что вам нужно будет запускать регулярно или «по требованию»? –

+0

Я не пробовал код. Я буду использовать его только один раз, есть длинный линг на друга, для отправки этих писем потребуется несколько дней, поэтому я хотел заполнить автоответчик. – ilhnctn

ответ

11

Вот лучший вариант:

1. convert Excel to CSV 
2. Import CSV to database 
3. Fetch the contents of database to your php page. 
4. Loop your contents and send mail. 

Преимущество:

  1. Вы не хотите какой-либо внешней библиотеки или плагинов
  2. Простое кодирование (извлечение данных из DB и рассылка)

Другой вариант чтения CSV и отправить почту:

Вот код для чтения данных из CSV и отправки почты: Это только пример кода, вы измените его в соответствии с вашими требованиями и CSV поле имена.

$row    = 1; 
if (($handle  = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num  = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 

     $to   = $data[2]; // as per your CSV shown in question. 
     $subject  = 'Your subject'; 
     $message  = 'Your mail content'; 
     $headers  = 'From: [email protected]' . "\r\n" . 
         'Reply-To: [email protected]' . "\r\n" . 
         'X-Mailer: PHP/' . phpversion(); 
     mail($to, $subject, $message, $headers); 

    } 
} 
+1

Звучит разумно .. Я попробую, спасибо – ilhnctn

+1

Блестящий путь. И если вы не хотите писать строки кода, вы можете использовать phplist (http://www.phplist.com/). Существует возможность импортировать CSV-файлы в список рассылки. Вы можете использовать пользовательские атрибуты для пользователей и редактировать сообщения и т. Д. Но иногда дольше его настраивать, чем писать короткий код :) – Kovge

+0

Я не php-кодер, но я хочу быть одним :) Для в тот момент, когда самый короткий путь был бы лучшим, поэтому я попробовал несколько разных библиотек без успеха. Почти все они лишили методов или ect. – ilhnctn

2

С помощью этого пакета вы можете прочитать файл XLS: http://code.google.com/p/php-excel-reader/ (Простой в использовании и там много примеров). Он анализирует файл XLS на ассоциативный массив. После этого вы можете запустить массив, получить от этого нужные данные и передать параметры функции почты. (Но я рекомендую не использовать обычную функцию почты, но вместо этого используйте phpMailer, http://phpmailer.worxware.com/)

И, как сказал другой комментатор, вы можете конвертировать ваш файл XLS в csv. В этом случае используйте функцию fgetcsv PHP http://php.net/manual/en/function.fgetcsv.php.

+0

спасибо за ответ, но методы по вашей ссылке устарели – ilhnctn

+0

Какие методы устарели? fgetcsv(), конечно, нет, и PHP Excel Reader по-прежнему работает, насколько мне известно –

+0

phpmailer переместился на http://code.google.com/a/apache-extras.org/p/phpmailer/. Моя ссылка была не такой идеальной: D. fgetcsv все еще работает над php 5.3 и не будет устаревать в 5.4, так как я красный. Развитие Excel читателя, как я знаю, закончен или приостановлен в 2010 году, но работает отлично для меня в (PHP5.3 тоже). Они отлично работают в течение многих лет. Это может быть причиной того, что они, кажется, старые :) – Kovge

0

Это не PHP-решение, но поскольку это одноразовая необходимость, нет никакого смысла в развертывании собственного решения. Вы могли бы попробовать что-то более простое.

Недавно я связал свой почтовый сервер с моей учетной записью gmail (как псевдоним) и воспользовался одной из многих доступных программ Mail Merge, которые сделали люди. Это просто:

  1. Создание электронной почты с такими значениями, как $% Name% и $% PIN, и сохранение его в качестве черновика.
  2. Открытие электронной таблицы слияния на вашем диске Google, вставка исходных данных и щелчок по пробелу.

Вы также можете попробовать любое количество бесплатных упакованных решений для слияния, например, xsMerge хром-приложение.

+0

моя проблема состоит в том, чтобы перебирать данные не по почте – ilhnctn

+0

@themarchoftheblackqueen О, я вижу, поэтому вы ищете способ импортировать электронную таблицу или разархивировать/декодировать и разобрать xml прямо с php? – Alain

3

Во-первых, если вы не против использования большой библиотеки PHP, я определенно проголосую за PHPExcel (http://phpexcel.codeplex.com). Вы можете проанализировать файл excel по строкам, чтобы получить информацию о пользователе.

Во-вторых, если у вас есть большая база данных, вы должны рассмотреть SendGrid (http://sendgrid.com) для отправки писем. Они имеют конфигурацию заголовка, оптимальную для всех получающих почтовых клиентов.

Удачи вам!

Смежные вопросы