За последние 24 часа нас посетил 54201 программист и 1724 робота. Сейчас ищут 824 программиста ...

Как отправить массив почтой

Тема в разделе "PHP для новичков", создана пользователем paqwerty, 7 фев 2011.

  1. paqwerty

    paqwerty Активный пользователь

    С нами с:
    2 мар 2007
    Сообщения:
    121
    Симпатии:
    0
    Доброго времени суток!

    Помогите пожалуйста, у меня есть ассоциативный массив и есть функция отправки почты. Мне надо значения массива оправить почтой. Я пробовал вставлять функцию почты в цикл foreach перебора массива, но тогда мне приходит очень много писем по одной позиции массива, т.е. сколько значений массива столько и писем. А как сделать чтобы в одном письме приходили все значения массива?
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    может быть поможет var_export?
     
  3. paqwerty

    paqwerty Активный пользователь

    С нами с:
    2 мар 2007
    Сообщения:
    121
    Симпатии:
    0
    Это я знаю и это работает, кстати также как и print_r или var_dump, но в таком случае я получаю всю структуру массива определенного стиля отображения, а мне требуется чтобы письмо выглядило по человечески...
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    paqwerty
    неправильно циклом пользуешься
     
  5. paqwerty

    paqwerty Активный пользователь

    С нами с:
    2 мар 2007
    Сообщения:
    121
    Симпатии:
    0
    вот как я делаю:

    PHP:
    1.  
    2. <?php
    3. $arr = array ("один" => "1", "два" => "2", "три" => "3", "десять" => "10");
    4. foreach ($arr as $k => $v) {
    5.      echo $k." - ".$v."<br>";
    6.      $temp = $arr;
    7. }
    8. $position = print_r($temp, true);
    9. $to = "namel@hostl.ru";
    10. $mail_subject = "сводка";
    11. $body = "произошли изменения: $position";
    12. $mail_headers="content-type:text/html; charset=windows-1251";
    13. mail ($to, $mail_subject, $body, $mail_headers);
    14. ?>
    15.  
    При таком варианте мне приходит письмо только и только такого вида:

    • Array
      (
      [один] => 1
      [два] => 2
      ...
      )

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

    А если я делаю так:

    PHP:
    1.  
    2. <?php
    3. $arr = array ("один" => "1", "два" => "2", "три" => "3", "десять" => "10");
    4. foreach ($arr as $k => $v) {
    5.      echo $k." - ".$v."<br>";
    6.      $to = "namel@hostl.ru";
    7.      $mail_subject = "сводка";
    8.      $body = "произошли изменения: $k." - ".$v."<br>";
    9.     $mail_headers="content-type:text/html; charset=windows-1251";
    10.     mail ($to, $mail_subject, $body, $mail_headers);
    11. }
    12. ?>
    13.  
    Тогда письма выглядя нормально, но сами пониамете таких писем уйма приходит, т.к. функция в цикле.
     
  6. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    PHP:
    1. <?php
    2. $arr = array ("один" => "1", "два" => "2", "три" => "3", "десять" => "10");
    3.  
    4. $body = "произошли изменения: <br>";
    5. $mail_subject = "сводка";
    6. $to = "namel@hostl.ru";
    7. $mail_headers="content-type:text/html; charset=windows-1251";
    8.  
    9. foreach ($arr as $k => $v) {
    10.   $body .= "{$k} - {$v}<br>";
    11. }
    12. mail ($to, $mail_subject, $body, $mail_headers);
    13. ?>
     
  7. paqwerty

    paqwerty Активный пользователь

    С нами с:
    2 мар 2007
    Сообщения:
    121
    Симпатии:
    0
    Gromo СПАСИБО ТЕБЕ ОГРОМНОЕ!

    Все гуд, работает, только не мог бы ты объяснить мне что значит ".=" и фигурные скобки?
     
  8. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    $body .= " text here";
    то же самое, что и
    $body = $body." text here";

    фигурные скобки нужны для подставления сложных перменных внутри строки с двойными кавычками.
    здесь простой случай, так что можно было бы написать и $body .= "$k - $v<br>";
    но если бы ты работал с массивами, то запись $body .= "$k - $arr[$k]<br>"; не сработала бы,
    а $body .= "$k - {$arr[$k]}<br>"; сработала.
     
  9. paqwerty

    paqwerty Активный пользователь

    С нами с:
    2 мар 2007
    Сообщения:
    121
    Симпатии:
    0
    Спасибо тебе за полезную для меня инфу, теперь на будущее буду знать.

    А такой еще вопрос - html разметка в этой строке не работает, т.е. например там написано <br>, мне и пишет в результате <br>, а не переносит на след. строку, это как решить?
     
  10. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    $body .= "{$k} - {$v}\n";
     
  11. paqwerty

    paqwerty Активный пользователь

    С нами с:
    2 мар 2007
    Сообщения:
    121
    Симпатии:
    0
    Да, спасибо, этто я стормозил.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Gromo
    Сама доброта! =)
     
  13. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    igordata
    с возвращением. велкам бэк ;)
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Gromo
    Шпасиба =)
    Я никуда не уходил, мне нужно было переставить винду...