За последние 24 часа нас посетил 34181 программист и 1709 роботов. Сейчас ищут 768 программистов ...

Рассылка с помощью mail() - проблемы с Gmail

Тема в разделе "PHP для новичков", создана пользователем bocharsky, 22 авг 2014.

  1. bocharsky

    bocharsky Новичок

    С нами с:
    18 апр 2014
    Сообщения:
    77
    Симпатии:
    1
    Добрый день.
    Надо наладить рассылку пользователям. Использовал mail().
    Код (Text):
    1.  
    2. $header = 'From: name@site.com';
    3. ...
    4. mail ($mail, $subject, $message, $header);
    На Mail.ru и Yandex.ru приходит ОК, на Gmail не приходит. После чтения интернетов и экспериментов, выяснилось, что на Gmail приходит, если добавить в конец заголовка /n

    Код (Text):
    1.  
    2. $header = 'From: name@site.com\n';
    Но в таком виде письмо на Gmail падает в спам, потому что (внимание) обратный адрес отбражается с дописанной в конце "n". Т.е. как
    Код (Text):
    1. name@site.comn
    .
    Gmail понятно такого доменного имени не знает, видимо решает, что это недобросовестный исполнитель и помечает спамом.
    (Повторюсь, если \n не ставить - то на Гмейл не приходит вообще)

    Думал, как избавиться от n на конце адреса. Сделал "длинный хедер":

    Код (Text):
    1. $header = 'From: name@site.com\n';
    2. $header .= 'Content-Type: text/html; charset=UTF-8\n';
    Подумал, что так может "n" после адреса "проскочит".

    В такой конфигурации письмо все равно отправилось в спам, а в поле обратного адреса появилось такое:
    от: text/html@vps-1026622-6031.host4g.ru
    ответить: text/html@vps-1026622-6031.host4g.ru, charset=UTF-8n@vps-1026622-6031.host4g.ru

    vps-1026622-6031.host4g.ru - это мой хостинг.

    Я попытался почитать в интернете про то, как решать проблемы с отправкой писем из php скриптов, сломал голову (целая наука о заголовках, каких-то почтовых серверах и специальных библиотеках) и прошу вашего совета.

    Есть ли сценарий, как решить эту задачу относительно простыми и надежными методами?

    Нужно:
    - просто отправлять (получать ответы, принимать почту не надо)
    - письма без атачей, картинок и пр.: просто html
    - количество писем в рассылке - думаю может дойти до 10 - 20 тыс. (вряд ли больше)
    - регулярность рассылок: 2 раза в день, в заданное время.

    Буду признателен советам, и если не прям коду, то хотя бы направлению - куда рыть.

    PS А то уже стал смотреть, может сгрузить эту задачу на Юнисендер, отправляя им адреса в адресный лист по АПИ. Но там нельзя в автореспондерах настроить нужную мне логику (2 раза в день в заданное время)

    Спасибо!
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Строка в одинарных кавычках обрабатывается не так как строка в двойных кавычках. Ты должен использовать двойные чтобы вставить символ перевода строки \n.
    http://ru2.php.net/manual/ru/language.types.string
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    при использовании ординарных кавычек вставленные в них спец символы, такие например как \n не обрабатываются, так же вставленные переменные в текст не обрабатываются, все это делается только в двойных кавычках.

    Код (PHP):
    1. $name = 'Vova';
    2. echo 'hello \n $name'; // оно и напечатает hello \n $name
    3. echo "hello \n $name"; // а тут hello  и с новой строчки Vova 
     
  4. bocharsky

    bocharsky Новичок

    С нами с:
    18 апр 2014
    Сообщения:
    77
    Симпатии:
    1
    Ух!
    Про то, что в одинарных кавычках не обрабатываются переменные, а выводятся, как текст - знал. А вот про спецсимволы - нет.
    Cпасибо!