Показано с 1 по 10 из 28

Тема: Макросы IF и TOADDR вместе

  1. #1
    Albertbel
    Albertbel вне форума
    Новичок
    Регистрация
    26.01.2005
    Сообщений
    3

    Макросы IF и TOADDR вместе

    по работе часто отправляю письма на трех языках: англ, немецкий и русский. Пытался настроить IF на то, чтоб распознавая часть адреса, он бы менял приветственную часть письма на соответствующий текст на языке. Грубо говоря, при домене .de - Guten Tag, при .ru - Добрый день, при всем остальном - Dear и т.д.* При вот таком варианте:
    %IF:"%TOADDR">".ru":"Уважаемый %TOLNAME,":""
    %IF:"%TOADDR">"@.de":"Hallo Fr./Hr.%TOLNAME,":"Dear Mrs./Mr.%TOLNAME"

    ничего не получается, точнее, отображается по два варианта. Помогите отладить , пожалуйста! Я уже два вечера бьюсь, и тексты из файлов вставлял, и три подряд строки IF ставил - всё равно по два варианта выходит.

    Заранее спасибо!

  2. #2
    Vadim
    Vadim вне форума
    Участник Аватар для Vadim
    Регистрация
    01.11.2002
    Сообщений
    4,711

    Re: Макросы IF и TOADDR вместе

    Вот вам небольшой пример :-)

    %IF:"%TIME='hh:mm:ss'"=>"06:00:00":"%IF:'%TIME=""h h:mm:ss""'<='08:59:59':'Доброе утро,'"%-
    %IF:"%TIME='hh:mm:ss'"=>"09:00:00":"%IF:'%TIME=""h h:mm:ss""'<='17:59:59':'Добрый день,'"%-
    %IF:"%TIME='hh:mm:ss'"=>"18:00:00":"%IF:'%TIME=""h h:mm:ss""'<='23:59:59':'Добрый вечер,'"%-
    %IF:"%TIME='hh:mm:ss'"=>"00:00:00":"%IF:'%TIME=""h h:mm:ss""'<='05:59:59':'Доброй ночи,'" %-

    Хотя вот сейчас попробую логику для Вас описать:

    Если домен равен ru, то "Добрый день", иначе (Если домен равен de, то "Guten Tag", иначе "Dear")

    Дока на IF выглядит в бате так:

    %IF : "var1" <comparison operator> "var2" : <true> : <false>

    Значит попробуем так:

    %IF:"%TOADDR"=".ru":"Добрый день":"%IF:'%TOADDR'='.de':'Guten Tag':'Dear'"%-

    Эту констукцию Вы засовываете в QT и даете ему имя (например privet)

    Ну а в тело письма вставляем

    %QINCLUDE="privet"


    Засаду рассказать сразу, али сами поймете?
    А ладно расскажу

    Вот эта констуркция у Вас не сработает никогда!!!
    "%TOADDR"=".ru" и как бы Вы ей не варировали "%TOADDR">".net" "%TOADDR"<>".de" т.д.
    Тоесть, чтобы оно работалу нуно пройтись регеспом по %TOADDR и выцепить после последней точки все… а вот дальше вравнивать это уже с ".ru" ".de" и т.д.

    Писать регесп я Вам не хочу :-)… Не люблю я их писать, но факт, что сейчас в моей варианте при поставке в поле TO .ru .de или чего-то еще - все работает супер :-) Думайте дальше :-)

  3. #3
    aff
    aff вне форума
    Участник
    Регистрация
    07.08.2003
    Сообщений
    1,376

    Re: Макросы IF и TOADDR вместе

    А немцев по кодировке нельзя отличить от англичанов?

  4. #4
    Vadim
    Vadim вне форума
    Участник Аватар для Vadim
    Регистрация
    01.11.2002
    Сообщений
    4,711

    Re: Макросы IF и TOADDR вместе

    Цитата Сообщение от aff
    А немцев по кодировке нельзя отличить от англичанов?
    А ты когда это отличать будешь, при создании нового письма то? Человеку это нужно на стадии создания письма, а не потом собственно!

  5. #5
    aff
    aff вне форума
    Участник
    Регистрация
    07.08.2003
    Сообщений
    1,376

    Re: Макросы IF и TOADDR вместе

    Ну письма пишут:
    а) в ответ
    б) по адреске
    в) по прямому адресу

    по кодировке можно писать письма в ответ. для русского и английского достаточно надежно.
    по адреске можно ставить метку или разбивать на группы
    по прямому адресу даже емайл не слишком однозначен, на некоторые com и net надо писать не на англицком.

    кстати:
    прикольная врезка в шаблон - определение ответа не по кодировке и не по емайлу, а по наличию верхних аски-символов:
    %REGEXPTEXT='([\xc0-\xff]{4})'

    (то есть 4 и более символов прдряд в верхней половине таблицы)

  6. #6
    Albertbel
    Albertbel вне форума
    Новичок
    Регистрация
    26.01.2005
    Сообщений
    3

    Re: Макросы IF и TOADDR вместе

    Спасибо за подсказки, но у меня вопрос: а если заставить по умолчанию писать бат что-то на английском, затем в темплейте поставить IF сравнение ".ru" и если да, то "CLEAR", а затем "добрый день". Потом поставить второе сравнени ".de", если да, то "CLEAR" и "Guten Tag". Но я чего-то так и не смог заставить CLEAR чистить текст.

  7. #7
    aff
    aff вне форума
    Участник
    Регистрация
    07.08.2003
    Сообщений
    1,376

    Re: Макросы IF и TOADDR вместе

    Как писал Вадим:
    Если домен равен ru, то "Добрый день", иначе (Если домен равен de, то "Guten Tag", иначе "Dear")
    Он вроде бы всё делает что описано чуть выше....

    зачем какой-то CLEAR?

    Во вторых есть такая штука опять же как Быстрые шаблоны.
    Заводятся шесть быстрых шаблонов (полных и без условий):
    руский-английский-немецкий ответ
    руское-английское-немецкое новое письмо
    эти быстрые шаблоны вешаются на кнопку написать письмо.

    Туда ставятся все приветствия и подписи, а также настраивается кодировка и проверка орфографии сразу на выбранном языке, а также прочие мелочи.

    а уж у шаблонах ящика, адрески можно наприсать просто:

    Если домен равен ru, то %QINCLUDE="rus", иначе (Если домен равен de, то %QINCLUDE="deu", иначе %QINCLUDE="eng")
    Больше в шаблоне ничего и не надо писать…

    А
    иначе %QINCLUDE="eng"
    иначе "Dear"
    это и есть варианты по умолчанию..... если остальное не сработало…



    где rus, deu, eng - это соответственные имена быстрых шаблонов.

    кстати, а в UMC нет простого определения домена чем родные проверки через тучу макросов с регэкспами.
    по крайней мере в UMC была проверка регэкспа одним макросом.




  8. #8
    Vadim
    Vadim вне форума
    Участник Аватар для Vadim
    Регистрация
    01.11.2002
    Сообщений
    4,711

    Re: Макросы IF и TOADDR вместе

    Итак, готов я Вам представить готовое решение этого вопроса с регеспом и все такое :-)… Не откажусь от бутылочки пивка :-)… Мы со Станиславом славно его выпьем ;-)

    Итак, создаете Quick Template, например, с именем privet (описание этого шаблона может свучать так: Выбор привествия для нового сообщения):

    Quick Template "privet"
    %SETPATTREGEXP="\.(.*)$"%VAR1=%REGEXPMATCH(%toaddr )%-
    %IF:"%VAR1"="ru":"Добрый день":"%IF:'%VAR1'='de':'Guten Tag':'Dear'"%-
    Далее можно создать еще привествие для ответов на сообщения:

    Quick Template "otvet"
    %SETPATTREGEXP="\.(.*)$"%VAR1=%REGEXPMATCH(%OFROMA DDR)%-
    %IF:"%VAR1"="ru":"Добрый день":"%IF:'%VAR1'='de':'Guten Tag':'Dear'"%-
    Ну вот, а теперь в шаблон нового сообщения вставляем следующий текст:

    %QINCLUDE="privet"

    %Cursor

    --
    %FromName
    mailto:%FromAddr
    Ну а шаблон ответа примерно такой:

    %QINCLUDE="otvet"

    %ODateEn, %OTimeLongEn, you wrote:

    %Quotes
    %Cursor

    --
    %FromName
    mailto:%FromAddr
    Ну вот собственно и все :-)

    Замечание: При создании нового письма у Вас по умолчанию будет стоять Dear, т.к. в начальной стадии ни одно из условий не выполняется. Но как только Вы напишите адрес в поле TO, то при перемещении в тело письма произойдет замена на нужное привествие!

    Благодарность: Спасибо огромное Stanislav Mikov за помощь в регеспе. Пиво надеюсь до нас все же дойдет ;D!!!

  9. #9
    AKazak
    AKazak вне форума
    Участник Аватар для AKazak
    Регистрация
    08.09.2005
    Сообщений
    74

    Re: Макросы IF и TOADDR вместе

    Спасибо ВАМ большое!!!

    Куда пиво пересылать? :

    По мере написания этих макросов у меня возникли 3 вопроса:

    1) пишу например так---> %IF:"%VAR1"="ru":"---------- Пересылаемое письмо ----------":"---------- Forwarding letter ----------"

    а в редакторе удобнее написать так ---> %IF:"%VAR1"="ru":"---------- Пересылаемое письмо ----------"
    :"---------- Forwarding letter ----------"

    Какой мне надо поставить разделитель между true и false для того, чтобы "Forwarding letter" не выходил на строку ниже чем " Пересылаемое письмо"???
    ???

    2) Есть ли какое-нибудь толковое руководство по макросам The Bat кроме help'а? Где его можно взять?

    3) Как заставить в руссифицированном The Bat! макросы %ODate, %OTimeLong выдавать дату и время на АНГЛИЙСКОМ языке?

  10. #10
    Vadim
    Vadim вне форума
    Участник Аватар для Vadim
    Регистрация
    01.11.2002
    Сообщений
    4,711

    Re: Макросы IF и TOADDR вместе

    А что готов правда прислать :-)??? А то я адресок то чиркану

    Знак не перевода на другую сторону вот так нужно писать:

    %-

    Самое правильное руководство - это в бате…

    А про дату - посмотрите вот тут: https://nobat.ru/shab_slash.html

    Да и вообще у нас на сайте много интересных макросов и шаблонов :-)

Похожие темы

  1. MOVED: Макросы IF и TOADDR вместе
    от Vadim в разделе The Bat!: вопросы и ответы
    Ответов: 0
    Последнее сообщение: 30.11.2005, 12:27
  2. Ответов: 3
    Последнее сообщение: 09.03.2004, 12:17
  3. Ответов: 1
    Последнее сообщение: 21.12.2002, 06:28
  4. Про макросы
    от keysdark в разделе Архив первого форума
    Ответов: 0
    Последнее сообщение: 13.09.2002, 14:25