Отсылка письма средствами nnCron

Обсуждение программ nnCron и nnCron LITE

Re: Отсылка письма средствами nnCron

Postby Aveiro » Sat, 09 Jul 2011, 20:03

....попробовал.
С MsgBox все правильно. А вот в консоли TYPE не показывает сного текст из буфера, все как на скриншотах выше. Второй запуск задачи- дописывает текст из буфера.
Ладно всем спасибо за помощь, букв А нет,значит что это оператор связи виноват.
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Отсылка письма средствами nnCron

Postby VoidVolker » Sun, 10 Jul 2011, 07:22

У меня все нормально печатается в консоли.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Отсылка письма средствами nnCron

Postby Aveiro » Sun, 04 Sep 2011, 14:22

Не знаю что произошло,но перестали отсылаться SMS и письма.
Причем одна и та-же задача выполняется нормально с ноутбука,а с компьютера показывает ошибку:
Плагин подключен, лежит в папке others. Задачу упростил до минимума.
Code: Select all
#######################################################################################################################################################################################################
#( SMS                                                                 
WatchFile: "D:\SYSTEM\Control\SMS_GATE.flag"                                           
Action:
    S" Тестовое сообщение"                                               \ текст
    S" тема письма"                                                      \ тема
    S" sidorov@yandex.ru"                                               \ mail кому
    S" ivanov@mail.ru"                                                   \ mail от кого
    S" ivanov"                                                           \ логин
    S" 12345"                                                      \ пароль
    S" smtp.mail.ru" 25                                                  \ адрес smtp сервера и порт
    SMTP-SEND&ATTACH ?DUP
    IF 
       MSG: "ошибка отправки: %0 esPICK%"
   ELSE 
       MSG: "ОК"
   THEN
)#
#######################################################################################################################################################################################################

Файервол отключен.Ноут и комп работают из одной сети (рядом 1 метр)
Ноут отсылает,комп нет.
Вот что выдается :
Image
и вот:
Image
Отключил все кронтабы,оставил только с этой задачей,не помогло.
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Отсылка письма средствами nnCron

Postby Aveiro » Sun, 04 Sep 2011, 15:48

Ура-ура !
Пол дня провозился,чтобы найти причину. :?
Сейчас поудалял все дополнительные плагины,оставил только те все,что шли с установкой крона.Заработала задача.
Теперь по одному буду добавлять,чтобы найти тот,что конфликтует с smtp.Найду,отпишусь.
Спустя время
P.S это просто чудеса какие-то, дело оказывается было не в подключенных плагинах, а в том ,в каком порядке они были подключены. Стоило в ini поставить плагин smtp сразу после основных и все,проблема ушла.....ух. Порядок подключения плагинов оказывается имеет очень важное значение.
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Отсылка письма средствами nnCron

Postby VoidVolker » Sun, 04 Sep 2011, 16:50

Aveiro wrote:не в подключенных плагинах, а в том ,в каком порядке они были подключены.

Возможно конфликт имен слов. Если WARNING включен, то к консоли сообщается о конфликте имен.
Aveiro wrote: Стоило в ini поставить плагин smtp сразу после основных и все,проблема ушла.....ух

Думаю, стоит выяснить какие именно плагины конфликтуют.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Отсылка письма средствами nnCron

Postby Aveiro » Sun, 04 Sep 2011, 16:58

VoidVolker wrote:Думаю, стоит выяснить какие именно плагины конфликтуют.

Да,пригодилось бы.
Каков порядок действий ?
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Отсылка письма средствами nnCron

Postby VoidVolker » Sun, 04 Sep 2011, 18:51

Менять порядок подключения обратно и проверять когда перстает работать. Также открыть консоль и перечитать кронтабы, при наличии конфликтов имен - в консоли будет предупреждение.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Отсылка письма средствами nnCron

Postby dimmer123 » Thu, 14 Jun 2012, 21:52

А можно тему или текст письма загрузить из файла?
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Отсылка письма средствами nnCron

Postby AlikasS » Fri, 15 Jun 2012, 03:45

dimmer123 wrote:А можно тему или текст письма загрузить из файла?

смотри все тот же пример
Code: Select all
S" C:\путь\какой-то_файл.txt" FILE
- чтение текстового файла целиком
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Отсылка письма средствами nnCron

Postby dimmer123 » Fri, 15 Jun 2012, 08:30

Спасибо.
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Отсылка письма средствами nnCron

Postby Morituruz » Fri, 27 Jul 2012, 15:39

У меня в яндекс-почте вместо переносов строки такая фигня (=D=A) приходит:
...нный к этому письму.=D=AТаким образом...

Версия плагина:
Code: Select all
\ Modified: 2011 03 22 17 06 +1000 AlikasS,
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: Отсылка письма средствами nnCron

Postby AlikasS » Sun, 29 Jul 2012, 12:11

Moriturus wrote:У меня в яндекс-почте вместо переносов строки такая фигня (=D=A) приходит:
...нный к этому письму.=D=AТаким образом...

Версия плагина:
Code: Select all
\ Modified: 2011 03 22 17 06 +1000 AlikasS,

какая-нибудь более старая или более новая (ранее в теме) версия плагина нормально работает?
у меня с майлру на яндекс и с яндекса на майлру все хорошо отправляет и отображает.
ну и сам код задачи покажи и SMTPLOGON что напишет в файл-лог в личку отправь
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Отсылка письма средствами nnCron

Postby Morituruz » Mon, 30 Jul 2012, 10:49

Отослал всё в личку со ссылкой.
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: Отсылка письма средствами nnCron

Postby AlikasS » Mon, 27 Aug 2012, 14:21

надо потестить
Code: Select all
\ smtp_nncron.f v 0.3 (адаптация под nnCron)
\ "Частичная" реализация протокола SMTP с возможностью аттача файлов

\ v 0.3.1 Modified: 2011 03 22 17 06 +1000 AlikasS,
\  почищен код от неиспользуемых фрагментов
\  кое где добавлены в обработку переносы строк (не видно было в письме-логе вложенных файлов, проверялось на TheBat)
\  некоторые правки кода при использовании слова SMTPLOGON (не сохранялся текст письма в письмо-лог)
\  добавлено вычисление времени UTC в строку с датой создания письма
\  письмо-лог, изменен формат наименования
\  идентификатор программы в теле письма изменен, что бы было видно дату модификации плагина
\ v 0.3.2 Modified: 2011 03 28 09 18 +1100 AlikasS,
\  изменено вычисление времени UTC в строку с датой создания письма (учет перевода часов)
\ v 0.3.3 Modified: 2012 07 31 01 00 +1100 AlikasS,
\  коррект при посылке переноса строк, пока установлена заглушка
\ v 0.3.5 Modified: 2012 08 20 14 35 +1100 AlikasS,
\  коррект при посылке переноса строк


\ дата внесения изменений в плагин, используется в идентификаторе программы в теле письма
: mod+ S" , smtp plugin v 0.3.5 (20.08.2912)" S+ ;



\ ADD-ATTACH ( adr n -- ) - Добавить путь к файлу в список для отправки

\ приоритеты письма
\ High-priority - высокий приоритет
\ Norm-priority - нормальный приоритет (по умолчанию)
\ Low-priority - низкий приоритет

\ подтверждения доставки и прочтения
\ Confirm-Reading - запрос подтверждения прочтения
\ Non-Confirm-Reading - нет запроса подтверждения прочтения (по умолчанию)

\ Confirm-Sending - запрос подтверждения доставки
\ Non-Confirm-Sending - нет запроса подтверждения доставки (по умолчанию)

\ адрес для обратного ответа установлен = адресу отправителя

\ установлен идентификатор почтовой программы
\ много текста, зато понятно какая программа отсылает и какой модификации плагин

\ опционально, использование "условно-зашифрованного" логина в adr3-1 n3-1
\ для получения которого -> nncron.exe с ключом -ep <ваш_логин>
\ SECLOGINON \ SECLOGINOFF ( по умолчанию выключен)

\ опционально, использование "условно-зашифрованного" пароля в adr4 n4
\ для получения которого -> nncron.exe с ключом -ep <ваш_пароль>
\ SECPASSON \ SECPASSOFF ( по умолчанию выключен)

\ Логирование вкл/выкл в письмо-лог
\ SMTPLOGON \ SMTPLOGOFF ( по умолчанию выключено)

\ SMTP-SEND&ATTACH ( adr n adr1 n1 adr2 n2 adr3 n3 adr3-1 n3-1 adr4 n4 adr5 n5 -- err ) - собственно сама отправка

\ adr n     - содержимое письма
\ adr1 n1   - тема письма
\ adr2 n2   - кому!!! (Через пробел можно указать нескольких адресатов )
\ adr3 n3   - от кого!!!
\ adr3-1 n3-1   - логин
\ adr4 n4   - пароль. Если пароль задать пустой строкой S" ", то аутентификация производится не будет (например для mail.ru)
\ adr5 n5   - адрес SMTP сервера
\ n6 - порт SMTP сервера
\ err       - 0 - зер гуд, иначе код ошибки

\ -----------------------------------------------------------------------------

: CUR-DAY/TIME>S ( -- a u)
GET-CUR-TIME
Year@ Mon@ Day@ Hour@ Min@ Sec@
<#
0 HOLD
S" .eml" HOLDS
S>D # # 2DROP
S" -" HOLDS
S>D # # 2DROP
S" -" HOLDS
S>D # # 2DROP
S" -" HOLDS
S>D # # 2DROP
S" -" HOLDS
S>D # # 2DROP
S" -" HOLDS
S>D # # # #
#>
;

CREATE UTCTIME /SYSTEMTIME ALLOT
WINAPI: GetSystemTime KERNEL32.DLL
WINAPI: SetSystemTime kernel32.dll
: GET-UTC-TIME UTCTIME GetSystemTime DROP ; \ принудительное обновление системного времени
: UTCMin@ GET-UTC-TIME UTCTIME wMinute W@ ;
: UTCHour@ GET-UTC-TIME UTCTIME wHour W@ ;
: UTCSec@ GET-UTC-TIME UTCTIME wSecond W@ ;
: UTCDay@ GET-UTC-TIME UTCTIME wDay W@ ;
: UTCMon@ GET-UTC-TIME UTCTIME wMonth W@ ;
: UTCYear@ GET-UTC-TIME UTCTIME wYear W@ ;
: UTCWDay@ GET-UTC-TIME UTCTIME wDayOfWeek W@ ?DUP 0= IF 7 THEN ;

: ~MYTIMELINE ( -- )
GET-UTC-TIME
UTCYear@ UTCMon@ UTCDay@ UTCHour@ UTCMin@ 0 YMDHMS>FT
FT-CUR FT- FT>MIN
;

: MYTIMELINE
~MYTIMELINE ( TIME-ZONE-BIAS ) -1 * DUP 0< IF S" -" ELSE S" +" THEN
2>R 60 /MOD ABS S>D <# # # #> 2R> 2SWAP S+
ROT ABS S>D <# # # #> S+
;

: CUR-DAY/TIME>S1 ( -- a u)
GET-CUR-TIME
Day@ Mon@ Year@ Hour@ Min@ Sec@
<#
0 HOLD
S"  " HOLDS
MYTIMELINE HOLDS
BL HOLD
S>D # # 2DROP
S" :" HOLDS
S>D # # 2DROP
S" :" HOLDS
S>D # # 2DROP
BL HOLD
S>D # # # # 2DROP
BL HOLD
1- 3 * MONNAMES 1+  + 3 HOLDS
BL HOLD
S>D # #
BL HOLD
[CHAR] , HOLD
WDay@ 1- 3 * WDAYS 1+  + 3 HOLDS
S" Date: " HOLDS
#>
2- \ вот не понятный момент,
\ в строку добавлялось еще два нуля,
\ пришлось ее посто обрезать на два символа
;


: ~N>H2 16 BASE @ >R BASE !
     S>D DUP >R DABS <# # # R> SIGN #>
     R> BASE !
;

FALSE VALUE SMTPLOGF
: SMTPLOGON TRUE TO SMTPLOGF ;
: SMTPLOGOFF FALSE TO SMTPLOGF ;

FALSE VALUE SECLOGIN
: SECLOGINON TRUE TO SECLOGIN ;
: SECLOGINOFF FALSE TO SECLOGIN ;

FALSE VALUE SECPASS
: SECPASSON TRUE TO SECPASS ;
: SECPASSOFF FALSE TO SECPASS ;

3  VALUE X-Priority
: High-priority 2 TO X-Priority ;
: Norm-priority 3 TO X-Priority ;
: Low-priority 4 TO X-Priority ;

FALSE VALUE X-Confirm-Reading-To
: Confirm-Reading TRUE TO X-Confirm-Reading-To ;
: Non-Confirm-Reading FALSE TO X-Confirm-Reading-To ;

FALSE VALUE Return-Receipt-To
: Confirm-Sending TRUE TO Return-Receipt-To ;
: Non-Confirm-Sending FALSE TO Return-Receipt-To ;

VARIABLE attList

: ADD-ATTACH S>ZALLOC attList AddNode ;

: ?free ?DUP IF FREE THROW THEN ;

CREATE vName 255 ALLOT

CLASS: SMTP <SUPER POP3
        var vLogin
        var vFrom
        var vTo
        var vSubj
        var vData
        var vAttach
        var vErr
        var vFB
        var vlfh
        1024 chars vBuf

DESTR: free
        vLogin @ ?free
        vFrom @ ?free
        vTo @ ?free
        vSubj @ ?free
        vlfh @ ?DUP IF CLOSE-FILE THROW THEN
        free
;

CONSTR: init
init
SMTPLOGF
IF
CUR-DAY/TIME>S R/W CREATE-FILE THROW vlfh !
THEN
;

M: Connect
vPort @ 0= IF 25 vPort ! THEN Connect
;

M: smtpOK?
read DROP 3 S>NUM DUP 200 399 WITHIN
IF DROP TRUE ELSE vErr ! FALSE THEN
;

M: Hello ( -- flag )
S" HELO localhost" write smtpOK? ;

M: Ehlo ( -- flag )
S" EHLO localhost" write HERE 1024 Read DROP  ( smtpOK?) TRUE
;

M: Auth ( -- flag )
S" AUTH LOGIN" write
read 2DROP
vLogin @ ASCIIZ>
SECLOGIN IF
        5 TO 64offset PAD debase64 2DUP + 0! 0 TO 64offset
THEN
HERE base64 write
read 2DROP
vPass @ ASCIIZ>
SECPASS IF
        5 TO 64offset PAD debase64 2DUP + 0! 0 TO 64offset
THEN
HERE base64 write
smtpOK?
;

M: Mail ( a n -- flag ) <# [CHAR] > HOLD vFrom @ ASCIIZ> HOLDS S" MAIL FROM: <" HOLDS 0#> write smtpOK? ;

M: Rcpt ( a n -- flag ) <# [CHAR] > HOLD HOLDS S" RCPT TO: <" HOLDS 0#> write smtpOK? ;

M: write 2DUP SELF ->CLASS POP3 write SMTPLOGF IF vlfh @ WRITE-LINE THROW ELSE 2DROP THEN ;

M: wrcrlf SELF ->CLASS Socket WriteCRLF SMTPLOGF IF LT LTL @ vlfh @ WRITE-FILE THROW THEN ;

M: sData ( adr n -- )  { \ tempalloc -- } \ Начало передачи
S" DATA" write
smtpOK?
IF
        <# vFrom @ ASCIIZ> HOLDS S" From: " HOLDS 0#> write
        S" X-Priority: %X-Priority%" EVAL-SUBST write
        X-Confirm-Reading-To
        IF
                <# vFrom @ ASCIIZ> HOLDS S" X-Confirm-Reading-To: " HOLDS 0#> write
                <# vFrom @ ASCIIZ> HOLDS S" Disposition-Notification-To: " HOLDS 0#> write
        THEN

        Return-Receipt-To
        IF
                <# vFrom @ ASCIIZ> HOLDS S" Return-Receipt-To: " HOLDS 0#> write
        THEN
S" X-Mailer: nncron %SVERSION%" mod+ EVAL-SUBST write
<# vFrom @ ASCIIZ> HOLDS S" Reply-To: " HOLDS 0#> write
<# vTo @ ASCIIZ> HOLDS S" To: " HOLDS 0#> write
<# vSubj @ ASCIIZ> HOLDS S" Subject: " HOLDS 0#> write
S" MIME-Version: 1.0" write
S" Content-Type: multipart/mixed; boundary=%QUOTE%bounds1%QUOTE%" EVAL-SUBST write
CUR-DAY/TIME>S1 write
wrcrlf
S" --bounds1" write
S" Content-Type: text/plain; charset=windows-1251" write
S" Content-Transfer-Encoding: quoted-printable" write
wrcrlf

OVER + SWAP
2DUP - ?DUP NOT IF 1 THEN 4 * ALLOCATE THROW TO tempalloc \ по идее один символ отправляется как 3, но взял с запасом (4)
?DO
   S" =" 2DUP SELF ->CLASS Socket Write tempalloc  +ZPLACE

I C@ ~N>H2 2DUP SELF ->CLASS Socket Write tempalloc  +ZPLACE
\   I C@  N>H 2DUP SELF ->CLASS Socket Write tempalloc  +ZPLACE

LOOP

tempalloc  ASCIIZ> SMTPLOGF IF vlfh @ WRITE-LINE THROW ELSE 2DROP THEN \ запись в письмо-лог
tempalloc  FREE THROW

        wrcrlf
ELSE 2DROP THEN
;

M: eData S" --bounds1--" write wrcrlf S" ." write wrcrlf ; \ а на фига здесь точка?

M: MyFILE \ { adr n --  adr1 n1 }
  R/O OPEN-FILE-SHARED IF DROP S" " EXIT THEN  >R
  R@ FILE-SIZE THROW D>S
  ?DUP IF
  DUP ALLOCATE THROW DUP vFB ! ( # a -- )
  DUP ROT R@ READ-FILE THROW
  ELSE
        S" "
  THEN
  R> CLOSE-FILE THROW ;

M: MyFILE-free vFB @ ?DUP IF FREE THROW vFB 0! THEN ;

M: _writeOneAttach
2DUP
ONLYNAME
vName ZPLACE
2DUP EXIST?
IF
wrcrlf
        MyFILE
        S" --bounds1" write
        S" Content-Type: plain/text;" write
        S"  name=%QUOTE%%vName ASCIIZ>%%QUOTE%" EVAL-SUBST write
        S" Content-transfer-encoding: base64" write
        S" Content-Disposition: attachment;" write
        S"  filename=%QUOTE%%vName ASCIIZ>%%QUOTE%" EVAL-SUBST write
        wrcrlf
        ?DUP IF
        DUP ROT ROT
        OVER + SWAP
        ?DO

\ 50 PAUSE

         DUP 57 > IF
                        I 57  vBuf base64 write

                ELSE
                        I SWAP vBuf base64 write LEAVE
                THEN
                57 ( 76 ) -
                57 ( 76 )
        +LOOP
        ELSE
                DROP wrcrlf
        THEN
ELSE 2DROP THEN
MyFILE-free
;

M: writeOneAttach NodeValue ASCIIZ> _writeOneAttach ;

M: free-node NodeValue FREE DROP ;

M: writeAttach
sData
   ['] writeOneAttach attList DoList
   ['] free-node attList DoList
   attList FreeList
eData
;
;CLASS

: SMTP-SEND&ATTACH { \ p fl -- }
SMTP NEW TO p
WITH SMTP
        p => vPort !
        p => Addr!
        S>ZALLOC p => vPass !
        S>ZALLOC p => vLogin !
        S>ZALLOC p => vFrom !
        S>ZALLOC p => vTo !
        S>ZALLOC p => vSubj !
[NONAME
        p => Create
        p => Connect
        p => read 2DROP
        p => vPass @ ASCIIZ> NIP
IF
        p => Ehlo
        p => Auth AND
ELSE
        p => Hello
THEN
IF
        p => Mail TO fl
        p => vTo @ ASCIIZ>
        <TIB
        0 >R
        BEGIN
                NextWord
                ?DUP IF R> 1+ >R THEN
                EndOfChunk
        UNTIL
        R>
        TIB>
        0 ?DO
           p => Rcpt fl OR TO fl
           LOOP

fl
IF p =>  writeAttach ELSE 2DROP 2DROP THEN
ELSE
    2DROP
THEN
NONAME] CATCH ?DUP IF p => vErr ! THEN
        p => Logout
        p => vErr @
        p => Delete
ENDWITH
;
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Отсылка письма средствами nnCron

Postby VoidVolker » Mon, 27 Aug 2012, 18:20

Code: Select all
: CUR-DAY/TIME>S1 ( -- a u)
GET-CUR-TIME
Day@ Mon@ Year@ Hour@ Min@ Sec@
<#
0 HOLD
S"  " HOLDS
MYTIMELINE HOLDS
BL HOLD
S>D # # 2DROP
S" :" HOLDS
S>D # # 2DROP
S" :" HOLDS
S>D # # 2DROP
BL HOLD
S>D # # # # 2DROP
BL HOLD
1- 3 * MONNAMES 1+  + 3 HOLDS
BL HOLD
S>D # #
BL HOLD
[CHAR] , HOLD
WDay@ 1- 3 * WDAYS 1+  + 3 HOLDS
S" Date: " HOLDS
#>
2- \ вот не понятный момент,
\ в строку добавлялось еще два нуля,
\ пришлось ее посто обрезать на два символа
;

0 HOLD — это ноль;
S" " HOLDS — а тут пробел.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

PreviousNext

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest