Перейти к содержимому
Форумы SkyCentre Прыжки с парашютом
ilya.

Каким IT решением воспользоваться?

Recommended Posts

Так как из общения видно, что на этом форуме есть специалисты абсолютно всех областей:) , то просьба подсказать решение для следующей задачи:

на обычный почтовый ящик приходит письмо, на которое автоответчик отвечает заданный текст С НОМЕРОМ, то есть "... Ваша заявка №77".

Обычный автоответчик на почте не подходит так как он умеет отвечать только статичным текстом. Среди CRM систем искал, но легких решений не нашел.

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Так как из общения видно, что на этом форуме есть специалисты абсолютно всех областей:) , то просьба подсказать решение для следующей задачи:

на обычный почтовый ящик приходит письмо, на которое автоответчик отвечает заданный текст С НОМЕРОМ, то есть "... Ваша заявка №77".

Обычный автоответчик на почте не подходит так как он умеет отвечать только статичным текстом. Среди CRM систем искал, но легких решений не нашел.

Спасибо!

Проще всего мониторить директорию, в которую письма валяться и соответственно при получении нового письма проверять его на ключевые фразы и генерировать ответ.

На чем писать скрипт неважно, можно использовать пхп/питон/перл/яву/да_хоть_cи++. Для мониторинга использовать например dnotify

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Так как из общения видно, что на этом форуме есть специалисты абсолютно всех областей :) , то просьба подсказать решение для следующей задачи:

на обычный почтовый ящик приходит письмо, на которое автоответчик отвечает заданный текст С НОМЕРОМ, то есть "... Ваша заявка №77".

Обычный автоответчик на почте не подходит так как он умеет отвечать только статичным текстом. Среди CRM систем искал, но легких решений не нашел.

Спасибо!

Вот скриптег, подправьте под себя и всё:

<?php
/** * Basic GMAIL Autoreply PHP Script. * Author: dtbaker.net * Date: 24th March 2013 * Why? Because Gmail autoreplies get sent to Return-Path. So when autoreplying to Mandrill (etc..) emails the built in gmail autoreply goes to the Mandrill bounce return-path account. * * Instructions: * * 1) Enter your IMAP account password in the config.php settings file. *    (For Google, I recommend setting up 2-Step Auth and use an Application Specific Password. Google for more info or try this direct link: https://accounts.google.com/b/0/IssuedAuthSubTokens ) * 2) Upload this file and config.php to a new folder on your website (eg: yourwebsite.com/emails/) * 3) Run this file in your browser to test (eg: yourwebsite.com/emails/cron.php) * 4) When it looks like it is working (and not going to send an autoreply to every email account in your system) change the "live" setting from "false" to "true" below * 5) Run this file again in your browser to test now that it is set to live * 6) Autoreplies should go out! * 7) Set this script up as a CRON job (eg: every 15 minutes) on your hosting account (ask your hosting provider for assistance in setting up a CRON job) * */


if(!function_exists('imap_open')){    die('IMAP extension not available, please swap hosting providers.');}
require('config.php');
$ssl = ($email_receive_secure) ? '/ssl' : '';$host = '{'.$email_receive_host.':'.$email_receive_port.'/'.$email_receive_mode.$ssl.'/novalidate-cert}'.$mailbox;if($debug)echo "Connecting to $host <br>\n";$mbox = imap_open ($host, $email_receive_username, $email_receive_password);if(!$mbox){    echo 'Failed to connect to account. Error is: '.imap_last_error();    imap_errors();    exit;}
$MC = imap_check($mbox);if($debug)echo 'Connected successfully. Got this many messages: '.$MC->Nmsgs ."<br>\n";
$search_results = array(-1); // -1 is all messagesif($email_receive_mode=='imap' && $search_string){    //imap_sort($mbox,SORTARRIVAL,0);    // we do a hack to support multiple searches in the imap string.    if(strpos($search_string,'||')){        $search_strings = explode('||',$search_string);    }else{        $search_strings = array($search_string);    }    $search_results = array();    foreach($search_strings as $this_search_string){        $this_search_string = trim($this_search_string);        if(!$this_search_string){            return false;        }        if($debug)echo "Searching for $this_search_string <br>\n";        $this_search_results = imap_search($mbox,$this_search_string);        if($debug)echo " -- found ". ($this_search_results ? count($this_search_results) : 'no')." results <br>\n";        print_r($this_search_results);        if($this_search_results){            $search_results = array_merge($search_results,$this_search_results);        }    }    if(!$search_results){        if($debug)echo "No search results for $search_string <br>\n";        exit;    }else{        sort($search_results);    }}imap_errors();
$sorted_emails = array();foreach($search_results as $search_result){    if($search_result>=0){        $result = imap_fetch_overview($mbox,$search_result,0);    }else{        $result = imap_fetch_overview($mbox,"1:". min(100,$MC->Nmsgs),0);    }    foreach ($result as $overview) {        if(!isset($overview->subject) && !$overview->date)continue; // skip these ones without dates and subjects?        if(strpos($overview->subject,'Re:')!==false){            if($debug){                // not sure if this is the best thing to do. oh well.                echo "Ignoring this email subject '".$overview->subject."' because it has 'Re:' in it. <br>\n";            }            continue;        }        $message_id = isset($overview->message_id) ? (string)$overview->message_id : false;        $overview->time = strtotime($overview->date);        $sorted_emails [] = $overview;    }}function dtbaker_ticket_import_sort($a,$b){    return $a->time > $b->time;}uasort($sorted_emails,'dtbaker_ticket_import_sort');// finished sorted our emails into a nice $sorted_emails array.

$message_number = 0;
require_once 'PHPMailer/class.phpmailer.php';require_once 'PHPMailer/class.smtp.php';

$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';
$mail->IsSMTP();                                   // Set mailer to use SMTP$mail->Host = $email_send_host;                    // Specify main and backup server$mail->SMTPAuth = $email_send_smtpauth;            // Enable SMTP authentication$mail->Username = $email_send_username;            // SMTP username$mail->Password = $email_send_password;            // SMTP password$mail->SMTPSecure = $email_send_smtpsecure;        // Enable encryption, 'ssl' also accepted$mail->Port = $email_send_port;                    // Port


foreach($sorted_emails as $overview){        $body = file_get_contents('template.html');
    $message_number++;    $message_id = (string)$overview->message_id;    if($debug){        ?>        <div style="padding:5px; border:1px solid #EFEFEF; margin:4px;">            Found email: <strong>#<?php echo $message_number;?></strong>            Date: <strong><?php echo $overview->date;?></strong> <br/>            Subject: <strong><?php echo htmlspecialchars($overview->subject);?></strong> <br/>            From: <strong><?php echo htmlspecialchars($overview->from);?></strong> <br/>            To: <strong><?php echo htmlspecialchars($overview->to);?></strong> <br/>            Message ID: <strong><?php echo htmlspecialchars($message_id);?></strong>        </div>        <?php    }    if(!$live){        if($debug){            echo "Not processing this email because we are not in 'live' mode. Please change \$live to true when you are ready. <br>\n";        }        continue;    }    // mark this email as seen. useful if we're searching based on "UNSEEN" emails.    $status = imap_setflag_full($mbox, $overview->msgno, "\\Seen");

    //clear addresses    $mail->ClearAddresses();
    $mail->From = $email_from;    $mail->FromName = $email_from_name;
    //Add a recipient    $mail->AddAddress($overview->from);
    // Add BCC    if(!empty($email_bcc)) $mail->AddBCC($email_bcc);
    $mail->IsHTML(true);
    $mail->Subject = 'Re: '.$overview->subject;
    $replace = array(        '{preheader}' => '',        '{subject}' => $mail->Subject,        '{senddate}' => date($timeformat, strtotime($overview->date)),        '{date}' => date($timeformat),
    );
    //replace placeholders    $body = str_replace(array_keys($replace), array_values($replace), $body);
    //remove all missing placeholders    $body = preg_replace('#{\w+}#', '', $body);
    $mail->Body = $body;
    if(!$mail->Send()) {        if($debug){           echo 'Message could not be sent.';           echo 'Mailer Error: ' . $mail->ErrorInfo;           continue;        }    }else{        if($debug){           echo 'Message sent to '.$overview->from;        }    }}

Конфиг под него:

<?php

/**** SETTINGS AREA ****/$live               = false; // change this to true when you're ready to start sending autoreplies. false leaves it in testing mode and will not sent auto replies.$debug              = true; //
/**** Settings for POP3/IMAP account (ie: reading emails) *****/
$email_receive_username     = 'your@gmailaccount.com';$email_receive_password     = 'password';$email_receive_mode = 'imap'; // or pop3$email_receive_host = 'imap.gmail.com';$email_receive_port = 993;$email_receive_secure = true; // use SSL or not.$mailbox            = 'INBOX';$search_string      = 'UNSEEN SUBJECT "%Message sent via your marketplace profile%"';// example searches: (see http://php.net/imap_search for more details)//$search_string      = 'TO "you@site.com" SINCE 10-May-2011';//$search_string      = 'UNSEEN'; // all unread emails//$search_string      = ''; // all emails no matter what

/**** Settings for SMTP account (le: sending email replies) ****/$email_from     = $email_receive_username;$email_from_name     = 'Your Name';$email_bcc     = ''; //BCC address
$email_send_host    = 'smtp.googlemail.com';$email_send_port    = '587';$email_send_username = $email_receive_username;$email_send_password = $email_receive_password;$email_send_smtpauth = true;$email_send_smtpsecure = 'tls';
$timeformat = 'Y-d-m H:i:s';/**** END SETTINGS ****/

Ну и не забудьте прикрутить PHP Mailer 5.4.2 и выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

stiner_rd, RED@KTOR, спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...