We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 17459
    • 268 Posts
    Я подправил скрипт в соответствии с постом http://modxcms.com/forums/index.php/topic,6450.msg87717.html#msg87717 , после чего у меня стало отправляться сообщение, но с неверной кодировкой тоже...

    Dmitrii, немного не разобрался: где нужно это прописать, в каком файле?
      • 7671
      • 14 Posts
      Quote from: Lord at Jun 21, 2007, 10:16 PM

      Я подправил скрипт в соответствии с постом http://modxcms.com/forums/index.php/topic,6450.msg87717.html#msg87717 , после чего у меня стало отправляться сообщение, но с неверной кодировкой тоже...

      Dmitrii, немного не разобрался: где нужно это прописать, в каком файле?
      Это самостоятельная функция посыла сообщения через smtp из одного из старых моих проектов. Если работает отправка - то оно уже вроде как и не нужно. Тем более моё не умеет авторизовываться в отличие от того, что в modx.

      Похоже нужно просто подкрутить на предмет соответствия нужной кодировке тему и тело сообщения. По ссылке выше были замечены упоминания кодировки ( $mail->setCharset($modx->config[’modx_charset’]); ). В крайнем случае можно попробовать выставить руками.

      Ещё совсем неплохо в заголовках прописать что используется все 8 бит. Или кодировать всё сообщение в 7 бит.

      PS: Как вариант, можно пнуть провайдера на предмет настроить mail() - я так обычно делаю. Хотя попался один неприкасаемый и пришлось городить smtp smiley

        WBR, Dmitrii
        +375-29-40-LINUX
        • 17459
        • 268 Posts
        Return-Path: <[email protected]>
        Received: from pickup.entropia.us ([85.21.138.133]) by mail.entropa.us with hMailServer ; Sat, 23 Jun 2007 06:58:29 +0400
        Message-ID: <[email protected]>
        To: [email protected]
        From: "Пикап" <[email protected]>
        Reply-To: <[email protected]>
        Subject: лялялял
        Date: Sat, 23 Jun 2007 06:58:29 +0400
        X-Mailer: Swift 1.3.0 by Chris Corbyn
        MIME-Version: 1.0
        Content-Type: multipart/mixed; boundary="swift-832C5B3BD97AD89AD52B5F14EEFAD6A1"
        Content-Transfer-Encoding: 7bit


        --swift-832C5B3BD97AD89AD52B5F14EEFAD6A1
        Content-Type: multipart/alternative; boundary="swift-713A3DDC5536CAC7CA1FF4100C0E5391"

        --swift-713A3DDC5536CAC7CA1FF4100C0E5391
        Content-Type: text/html; charset="UTF-8"
        Content-Transfer-Encoding: 8bit

        <p>
        лялял
        </p>
        <p>


        ящя
        </p>
        <p>


        мамамама&nbsp;
        </p>
        <p>


        fvfvfdvdfv&nbsp;
        </p>

        --swift-713A3DDC5536CAC7CA1FF4100C0E5391--

        --swift-832C5B3BD97AD89AD52B5F14EEFAD6A1--

        Это пример того сообщения. Подставил $mail->setCharset($modx->config[’modx_charset’]); Это не помогло sad
        Впрочем, само сообщение ок доходило, проблема только с кодировкой темы сообщения.
          • 17459
          • 268 Posts
          Сайт будет переноситься на другой сервер, у заказчика свой сервер и мне даже неизвестно, какая там стоит ОС... Поэтому самое лучшее - это использовать SMTP, ИМХО... Он-то уж точно должен быть.

          Проблему решил, теперь вот так стало: Subject: =?UTF-8?B?0J/RgNC+0LLQtdGA0LrQsA==?= и всё прекрасно показывается.

          Воспользовался строчкой
          $subject=’=?UTF-8?B?’.base64_encode($subject).’?=’; и по аналогии сделал

          Большое спасибо за приведённый фрагмент кода, это мне очень помогло

          +rep вообщем smiley

          Если кому-либо ещё надо, могу приаттачить свои файлы.

          А пнуть ... хех, пнуть самого себя надо или админа smiley

            • 17459
            • 268 Posts
            Ещё 2 вопроса остались об этом модуле...

            1. Можно ли сделать ссылку Отписаться в самом сообщении
            вроде несложно, попробую вечером, спросил на всякий случай smiley
            2. А как отправлять автоматом вновьсозданные документы на почту всем. Если они в папке Новости, например.

            Первую часть второй задачи знаю как сделать. Плагин есть такой:

            global $content;
            $e = &$modx->Event;

            switch($e->name) {
              case ’OnDocFormPrerender’:
                if(($_REQUEST[’pid’] > 0) && ($id == 0)) {
                  if($parent = $modx->getPageInfo($_REQUEST[’pid’],0,’id, template’)) {
                    $content[’template’] = $parent[’template’];
                    if($parent[’template’]==333) отправить  $content[’pagetitle’] как тему u $content[’introtext’].’
            <a href="[~$content[’id’]~]">Читай подробнее тут...</a>’ как тело сообщения всем на имэйл
                  }
                }
                break;

              default:
                return;
                break;
            }

            Как можно заставить модуль это сделать? Или просто copy-paste из самого модуля по аналогии...

            3. WYSIWYG не работает... может, я в html хочу отправить, а не текстом, а он не работает... То есть он подгружается, кнопочки видны и нажимаются, но не работают.
              • 7671
              • 14 Posts
              Quote from: Lord at Jun 22, 2007, 10:14 PM

              Content-Transfer-Encoding: 7bit
              Совсем неплохо поправить это на 8bit - рано или поздно найдётся хитронастроенный сервер который откусит 8-й бит smiley
              Ну а про пнуть провайдера - это я любя. Исходя из точки зрения: стоит PHP = будь любезен настрой. В том числе mail();
              Хотя smtp даёт большую свободу.

              PS: Меня еще терзают сомнения по поводу русских букв в поле From - надо или поменять на англицкие или смотреть что по этому поводу думает RFC
                WBR, Dmitrii
                +375-29-40-LINUX
                • 17459
                • 268 Posts
                Ага, понятно, спасибо...

                Я тут плагинчик написал, чтобы при добавлении сам отсылал новости, но он не работает...
                <?php
                /*
                 * News2email
                 *
                 * Version 1.0
                 *
                 */
                
                $e = &$modx->Event;
                
                switch($e->name) {
                  case 'OnDocFormSave':
                  $sql = 'SELECT `pagetitle`, `parent`, `introtext` FROM `modx_site_content` WHERE `id`='.$id;
                  $newdoc = $modx->db->query($sql);
                  $newdoc = $modx->db->getRow($newdoc);
                    if($newdoc['parent'] == 6) {
                		require($modx->config['base_path'].'assets/modules/koopsmailinglist/Swift5/Swift.php');
                		require($modx->config['base_path'].'assets/modules/koopsmailinglist/Swift5/plugins/Swift_Anti_Flood_Plugin.php');
                		require($modx->config['base_path'].'assets/modules/koopsmailinglist/Swift5/Swift/Swift_SMTP_Connection.php');		
                		$sql = "SELECT id, email FROM mail_subscribers";
                		$result = $modx->db->query($sql);		
                		$recipients = array();
                		while($newArray = $modx->db->getRow($result)){
                			array_push($recipients, $newArray['email']);	
                		}
                		$mail = new Swift(new Swift_SMTP_Connection('mail.entropia.us'));
                		$mail->authenticate( 'alexander-sobaka-entropia.us', 'parol' );		
                		$text = str_replace('/UserFiles','http://'.$_SERVER['HTTP_HOST'].'/UserFiles', $newdoc['introtext']);
                		// convert [~ID~] urls 
                //		$text = preg_replace_callback(
                //			'!\[\~([0-9]+)\~\]!is',
                //			create_function(
                //				'$matches',
                //				'global $modx; return $modx->makeUrl($matches[1],\'\',\'\',\'full\');'
                //			), $_POST['tvmailMessage'], 1
                //		);
                		
                		// Make URLs absolute
                		$text = preg_replace("@(<\s*(a|img)\s+[^>]*(href|src)\s*=\s*[\"'])(?!http)([^\"'>]+)([\"'>])@","$1".$modx->config['site_url']."$4$5",$text);		
                		if(!$mail->hasFailed()){
                			$mail->loadPlugin(new Swift_Anti_Flood_Plugin(100, 30));
                			//Make the script run until it's finished in the background
                			set_time_limit(0); ignore_user_abort();			
                			$mail->addPart($text, 'text/html');
                			$mail->setCharset($modx->config['modx_charset']);
                			$subject='=?UTF-8?B?'.base64_encode($newdoc['pagetitle']).'?=';
                			$mail->send($recipients, '"'.$yourname.'" <'.$youremail.'>', $subject);
                			$mail->close();
                //			echo $sent.'.';
                //		}else{
                //			echo "The mailer failed to connect. Errors: ".print_r($mailer->errors, 1).". Log: ".print_r($mailer->transactions, 1);
                		}		
                }
                break;
                
                default:
                return;
                break;
                }
                ?>
                

                Проблема в том что письмо не отсылается. Ошибка где-то в самом начале...
                  • 31049
                  • 48 Posts
                  Quote from: Lord at Jun 22, 2007, 10:33 PM

                  Если кому-либо ещё надо, могу приаттачить свои файлы.

                  Надо и даже очень! smiley
                    • 31049
                    • 48 Posts
                    Íèêòî òàê è íå ðåøèë âîïðîñ ñî çíàêàìè âîïðîñà â òåëå ñîîáùåíèÿ? $charset ìåíÿë íà ÷òî óãîäíî, ïðîáîâàë ðàçíûå âåðñèè, êàê-òî íå ïîëó÷àåòñÿ sad

                    Êîäèðîâêà ñàìîãî ñàéòà - win-1251
                      • 23451
                      • 232 Posts
                      Quote from: Lord at Jun 23, 2007, 02:10 PM

                      Ага, понятно, спасибо...

                      Я тут плагинчик написал, чтобы при добавлении сам отсылал новости, но он не работает...

                      Доброго дня!
                      Случаем не заработал твой плагин? Очень полезная штука, имхо wink