2013-05-09 3 views
0

Я использую OTRS 3.2, и я хочу автоматически установить адрес электронной почты To на значение, основанное на одном из динамических полей. Это работало отлично в 3.1 с кодом ниже AgentTicketForwardКак установить в адрес электронной почты для ForwardTicket

if ($Data{DynamicField_Test} eq 'ABC') { 
     $Data{To}="abc\@example.com"; 
} elsif ($Data{DynamicField_Test} eq 'XYZ') { 
     $Data{To}="xyz\@example.com"; 
} 

После обновления до OTRS 3.2 он перестал работать. Он не только не заполняет адрес электронной почты, но также не отправляет никаких писем, если поле Кому заполняется вручную.

Кто-нибудь знает, что изменилось в 3.2, чтобы оно перестало работать?

ответ

1

@ is sigil, который представляет массивы perl и двойные кавычки, интерполирует массивы на строку.

Чтобы избежать интерполяции, вам понадобится обратная косая черта в двойных кавычках (\ @) или используйте одинарные кавычки.

if ($Data{DynamicField_Test} eq 'ABC') { 
     $Data{To} = '[email protected]'; 
} 
elsif ($Data{DynamicField_Test} eq 'XYZ') { 
     $Data{To} = '[email protected]'; 
} 
# default for $Data{To} 
else { 
     $Data{To} = '...' 
} 
+0

Вы правы, что мой исходный код не работает. Я добавил escape (\) для @ в адрес электронной почты, как и настоящий код. Код работает (он не выдает ошибок), но просто не заполняет поле To в форме. – Nin

+0

Я бы добавил else {} block в случае, если $ Data {DynamicField_Test} не удовлетворяет предыдущим условиям. –

+0

Если это не удовлетворяет, оно может быть пустым, так что все в порядке. Реальная проблема заключается в том, что форма не заполняется в 3.2, но она была в 3.1 с тем же кодом. – Nin