IMAP: Пращане на копие в папка изпратени в емейл кутията [PHP код]

Pok4

Registered
Здравейте,

Преди няколко дни ме попитаха как да изпратят копие на даден отговор на емейл в кутията Изпратени от сайта... И днеска реших да потърся вариант на това нещо и евентуално да го вградя в Argos по-нататък.
Към JUMP.bg съм със системата и кода на техните сървъри работи по-този начин:
Код:
        //sent email to send folder
        $imap = imap_open("{mail.argoscms.pw:993/imap/ssl/novalidate-cert}INBOX.Sent", "admin@argoscms.pw", "Парола-на-емейла");
        $check = imap_check($imap);
        imap_append($imap, "{mail.argoscms.pw:993/imap/ssl/novalidate-cert}INBOX.Sent"
                           , "From: ".$admin_email."\r\n"
                           . "To: ".$his_mail."\r\n"
                           . "Subject: Message from ".$site_name."\r\n"
                           . "\r\n"
                           . "".$our_text."\r\n"
        );

        $check = imap_check($imap);
        imap_close($imap);

На други хостинг провайдъри трябва да смените само емейл сървъра.

В Аргос вероятно ще трябва да се добавят къстъм полета в конфигурацията за емейл сървър и паролата, но това зависи вече от мен как ще го конфигурирам точно, може и като дефиниции в config.env да са...
Кода е тестван и работи коректно на jump.bg и емейл кутията roundcube.
 
Ами аз съм на споделения им хостинг колкото за демо го взех с промо код.
В документацията им си пише за IMAP - https://www.jump.bg/members/knowledgebase/48/Poshtenski-nastroyki-za-meyl-klient.html
  • При протокол IMAP:
    • Входящ порт: 993
    • Изходящ порт: 465
Тоест, 993 е порта и ни трябва входящия сървър, изходящия не ни трябва (465 порт)
Аз имах проблеми, гледах натам насам, писах на поддръжката и накрая в stackoverflow видях 1 парче код и си го взех и проработи.
Просто в Аргос от админ панела се получават писмата от контактната форма и може да им отговаряш и като отговориш сетва 'Отговорено: да', обаче ти дефакто си отговорил, но не знаеш след това дали е успешно или не и няма лог.. Така сега след събмит на формата се изпраща и копие в папка Изпратени до емейла след отговора на админа.. И всичко е ОК.

IMAP имат и superhosting (https://help.superhosting.bg/superhosting-mail-server.html). @Blinky при вас не знам как е... (не съм чел и не ми се занимава сега)
Дали върви с мейл сървъра, дали е отделно, дали, дали, дали :D Все тая.. Просто ме попитаха дали има шанс да стане, защото иначе се обезмисляла тази форма за отговори, по-добре да си копирали емейл адреса и да си отговаряли директно през техния емейл, а не през системата...

Сега обаче всичко заспа :D
Мисля обаче, че този imap си върви с мейл сървъра, но не ми се занимава да чета сега..
 
IMAP имат и superhosting (https://help.superhosting.bg/superhosting-mail-server.html). @Blinky при вас не знам как е... (не съм чел и не ми се занимава сега..
То е стандарт при всеки почти. При нас е така:


Не виждам голяма разлика. Но това на практика би вървяло на всеки стандартизиран хостинг план. ;)
 
Да, предполагам, че е стандарт. Аз обаче докато рових, видях, че за gmail, ако искаш да пращаш в кутията им е коренно различно..
Така че, считайте кода по-горе годен само за споделени хостинги, ако искате да си бачкате с някакъв друг емейл ще трябва да се поровите и да си конфигурирате нещата по-друг начин!
 
Ползвай някоя библиотека или поне сложи ти някоя друга проверка преди така смело да го изтупаш тоя код
 
По принцип ползвам Nette за емейли - https://github.com/nette/mail, но май нямат wrapper за imap.
В момента съм го обградил в !empty($_SERVER['EMAIL_IMAP_*]) проверки, които се дърпат от config.env.
Ако ги има въведени (3 на брой са - емейл, парола + сървър) - ще изпълни кода.
Не виждам друго какво мога да направя. Мислих да го обхвана с try/catch, да видя как ще е..
Също така горния код няма зададен charset, при мен си го оправих, трябва да си зададете utf-8 иначе кирилицата няма да я чете.
Така де, ако има някакъв проблем - ще ме търсят няма как... Може мейл сървъра да не започва с mail, а с email или да е на друг сървър.. ? Дали е възможно не знам, но май е... Който въведе 3-те променливи трябва да е сигурен, че е въвел правилно данните и ако има грешка да се свърже с хостинг провайдъра си, за да му каже кой е правилния мейл сървър и порт. Порта не съм го декларирал остава си 993.
3-те променливи няма да ги декларирам никъде, а ще чакам някой да иска подобно нещо и ще му ги дам да си ги сложи в config.env. Логиката е в Модел контролера в админската част за отговарянето на емейли.
Иначе има и друго - Nette има addCC - праща емейла в папка "Входящи" като копие и там не ти трябва нищо друго, а само реда с $this->mail->addCC($mail), но реших, че е по-добре да е разграничено и да праща в Изпратени...
Nette всъщност е по-лека алтернатива на PHPMailer библиотеката, която е доста напомпана и реших да не я ползвам..
 
Последно редактирано:

Back
Горе