1 Востаннє редагувалося A.N.Onim (21.02.2016 19:05:56)

Тема: E-mail розсилання

Доброго дня. Потрібно навчитись робити E-mail розсилання. Полазив в Гуглі - купа загальних порад та купа реклами купи прог для цього. Підскажіть які проги дійсно потрібно використовувати, та які технології знати?

Дякую!

2

Re: E-mail розсилання

так це спам, а так на пітоні написав власний розсилальник листів в списку база емайлів в форматі тхт, використовував Python + CGI
1. краще мати власний поштовий сервер, бо на платних навіть коли платиш багато лімітів
2. попадання в спам, це тема окрема

- Поганому трояну фаєрвол заважає
- Ніколи не програмуйте та не пийте пиво
Якщо ви з першого разу написали програму, в якій немає жодної помилки, повідомте про це системного програмісту: він виправить помилки в компіляторі

3 Востаннє редагувалося Q-bart (21.02.2016 21:42:03)

Re: E-mail розсилання

Якщо не багато(до 2 тис) email'ів, то можна безплатно, щоб не морочитись з налаштуванням, спам фільтрами і тд. взяти mailchmip. Або є й українські аналоги

Навчаюсь вчитись, щоб навчатись.

4

Re: E-mail розсилання

Та трохи не в тому річ. Є вакансія, а в ній критерій - потрібно вміти створювати E-mail розсилання. Тому і питаю)

5

Re: E-mail розсилання

як фірма називається ?

- Поганому трояну фаєрвол заважає
- Ніколи не програмуйте та не пийте пиво
Якщо ви з першого разу написали програму, в якій немає жодної помилки, повідомте про це системного програмісту: він виправить помилки в компіляторі

6

Re: E-mail розсилання

reverse2500 написав:

як фірма називається ?

Не важливо - багато де є ця вимога - тому і питаю.  :)

7 Востаннє редагувалося 221VOLT (23.02.2016 04:50:17)

Re: E-mail розсилання

можна розсилати не тільки зі свого хостинга/свого сервера/платного сервіса, а ще й з гугл-пошти :)
там правда є трошки заморочок щоб дозволити відправлення - але працює, це поки всі варіанти які я знаю

для відправлення через гугл ---
0) php - я узяв php-class SendMailSmtpClass by Ipatov Evgeniy

SendMailSmtpClass.php

class SendMailSmtpClass {

    /**
    * 
    * @var string $smtp_username - логин
    * @var string $smtp_password - пароль
    * @var string $smtp_host - хост
    * @var string $smtp_from - от кого
    * @var integer $smtp_port - порт
    * @var string $smtp_charset - кодировка
    *
    */   
    public $smtp_username;
    public $smtp_password;
    public $smtp_host;
    public $smtp_from;
    public $smtp_port;
    public $smtp_charset;
    
    public function __construct($smtp_username, $smtp_password, $smtp_host, $smtp_from, $smtp_port = 25, $smtp_charset = "utf-8") {
        $this->smtp_username = $smtp_username;
        $this->smtp_password = $smtp_password;
        $this->smtp_host = $smtp_host;
        $this->smtp_from = $smtp_from;
        $this->smtp_port = $smtp_port;
        $this->smtp_charset = $smtp_charset;
    }
    
    /**
    * Отправка письма
    * 
    * @param string $mailTo - получатель письма
    * @param string $subject - тема письма
    * @param string $message - тело письма
    * @param string $headers - заголовки письма
    *
    * @return bool|string В случаи отправки вернет true, иначе текст ошибки    *
    */
    function send($mailTo, $subject, $message, $headers) {
        $contentMail = "Date: " . date("D, d M Y H:i:s") . " UT\r\n";
        $contentMail .= 'Subject: =?' . $this->smtp_charset . '?B?'  . base64_encode($subject) . "=?=\r\n";
        $contentMail .= $headers . "\r\n";
        $contentMail .= $message . "\r\n";
        
        try {
            if(!$socket = @fsockopen($this->smtp_host, $this->smtp_port, $errorNumber, $errorDescription, 30)){
                throw new Exception($errorNumber.".".$errorDescription);
            }
            if (!$this->_parseServer($socket, "220")){
                throw new Exception('Connection error');
            }
            
            $server_name = $_SERVER["SERVER_NAME"];
            fputs($socket, "HELO $server_name\r\n");
            if (!$this->_parseServer($socket, "250")) {
                fclose($socket);
                throw new Exception('Error of command sending: HELO');
            }
            
            fputs($socket, "AUTH LOGIN\r\n");
            if (!$this->_parseServer($socket, "334")) {
                fclose($socket);
                throw new Exception('Autorization error');
            }
            
            
            
            fputs($socket, base64_encode($this->smtp_username) . "\r\n");
            if (!$this->_parseServer($socket, "334")) {
                fclose($socket);
                throw new Exception('Autorization error');
            }
            
            fputs($socket, base64_encode($this->smtp_password) . "\r\n");
            if (!$this->_parseServer($socket, "235")) {
                fclose($socket);
                throw new Exception('Autorization error');
            }
            
            fputs($socket, "MAIL FROM: <".$this->smtp_username.">\r\n");
            if (!$this->_parseServer($socket, "250")) {
                fclose($socket);
                throw new Exception('Error of command sending: MAIL FROM');
            }
            
            $mailTo = ltrim($mailTo, '<');
            $mailTo = rtrim($mailTo, '>');
            fputs($socket, "RCPT TO: <" . $mailTo . ">\r\n");     
            if (!$this->_parseServer($socket, "250")) {
                fclose($socket);
                throw new Exception('Error of command sending: RCPT TO');
            }
            
            fputs($socket, "DATA\r\n");     
            if (!$this->_parseServer($socket, "354")) {
                fclose($socket);
                throw new Exception('Error of command sending: DATA');
            }
            
            fputs($socket, $contentMail."\r\n.\r\n");
            if (!$this->_parseServer($socket, "250")) {
                fclose($socket);
                throw new Exception("E-mail didn't sent");
            }
            
            fputs($socket, "QUIT\r\n");
            fclose($socket);
        } catch (Exception $e) {
            return  $e->getMessage();
        }
        return true;
    }
    
    private function _parseServer($socket, $response) {
        while (@substr($responseServer, 3, 1) != ' ') {
            if (!($responseServer = fgets($socket, 256))) {
                return false;
            }
        }
        if (!(substr($responseServer, 0, 3) == $response)) {
            return false;
        }
        return true;
        
    }
}

1) включити stmp - imap - в налаштуваннях гугл-емейла https://mail.google.com/mail/u/0/#settings/fwdandpop
2) дозволити непровіренним додаткам доступ https://www.google.com/settings/security/lesssecureapps
3) дозволити доступ з іншого(нового) місця https://accounts.google.com/DisplayUnlockCaptcha

4) код відправлення (якось так - лише робочий набросок)

include("SendMailSmtpClass.php");
    
    $name = htmlspecialchars($_POST['name'], ENT_QUOTES);
    $tel = htmlspecialchars($_POST['tel'], ENT_QUOTES);
    $time = htmlspecialchars($_POST['time'], ENT_QUOTES);
    
    $theme = 'Новий замовник';
    $emailtext = $theme.':<br>'.$name.'<br>'.$tel.'<br>'.$time;

    $mailSMTP = new SendMailSmtpClass('хххх@gmail.com', 'хххууу', 'ssl://smtp.gmail.com', 'Taras', 465); // створюємо екземпляр класа
    //$mailSMTP = new SendMailSmtpClass('логін', 'пароль', 'хост', 'імя відправника');//наш емейл звідки відправляємо
    
    // заголовок листа
    $headers= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодування листа
    $headers .= "From: Taras <ххх@gmail.com>\r\n"; // выд кого лист
    $result =  $mailSMTP->send('уууу@gmail.com', $theme, $emailtext, $headers); // відпрвляємо лист
    //$result =  $mailSMTP->send('Кому лист', 'Тема', 'Текст листа', 'Заголовки');
    if($result === true){
        echo "Успішно відправлено";
    }
    //}else{
    //    echo "Не відправлено. Помилка: " . $result;
    //}

у теорії повинно працювати і з яндексом, і з мейл.ру та іншими, на практиці працював я поки що тільки з гуглом  :)

відповідно на цих алгоритмах можна відправляти через гугл емейли не тільки на php, а практично на будь-якій мові програмування - хоть на js чи erlang (=

https://blog.clever-games.win/
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.

8

Re: E-mail розсилання

A.N.Onim написав:

Доброго дня. Потрібно навчитись робити E-mail розсилання. Полазив в Гуглі - купа загальних порад та купа реклами купи прог для цього. Підскажіть які проги дійсно потрібно використовувати, та які технології знати?

Дякую!

Дивіться, я можу вам порадити курси на яких ви 100 відсотків навчитесь робити листи які зможуть вам пізніще продаж. Взагалі E-mail маркетинг зараз на хвилі

«Уникайте тих, хто намагається підірвати вашу віру в себе. Ця риса властива дрібним людям. Велика людина, навпаки, вселяє вам відчуття, що і ви можете стати великим»

Марк Твен