TFbmVariableItemList.NameValueText
Diese Variable ist vom Typ string und eine Eigenschaft der Klasse TFbmVariableItemList, welche in der Unit Item definiert wurde. Auf die Variable kann sowohl lesend als auch schreibend zugegriffen werden.
Mit dieser Eigenschaft können einem Element auf sehr einfachem Weg Variablen zur Verfügung gestellt werden. Es kann eine Zeichenkette mit jeweils einem "Name/Value"-Paar pro Zeile übergeben werden. Die einzelnen Zeilen sind dabei durch \r\n getrennt.
Beispiel für die Datenübergabe:
1
2
3
2
3
Item.Variables.NameValueText :=
'Vorname=Max' + #13#10 +
'Nachname=Mustermann';
'Vorname=Max' + #13#10 +
'Nachname=Mustermann';
Nach der Übergabe kann via Item.Variables.Values['Vorname'] auf den Namen zugegriffen werden. Außerdem stehen die Variablen im Text der Nachricht zur Verfügung und können z.B. über [$Vorname] im Text verwendet werden.
Ein etwas komplexeres Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var
AutoReplyItem: TFbmItem;
DraftItem: TFbmItem;
begin
DraftItem := TFbmItem.Create(ikEmail, 0);
try
DraftItem.DbQuery := DbQuery;
DraftItem.LoadAttachmentsContent;
DraftItem.Load(92);
if Item.Kind = DraftItem.Kind then
begin
AutoReplyItem := TFbmItem.Create(DraftItem.Kind, 0);
try
AutoReplyItem.Assign(DraftItem, [iaoAttachments, iaoProperties, iaoUserFields, iaoNowAsCreated], iasNew);
AutoReplyItem.State := isAnswer;
AutoReplyItem.TaskNumber.Assign(Item.TaskNumber);
AutoReplyItem.Classified.Assign(Item.Classified);
if Assigned(AutoReplyItem.Recipients) then
begin
if (Item.Kind = ikEmail) and (Item.Properties is TFbmItemEMailProperties) and (TFbmItemEMailProperties(Item.Properties).ReplyTo.Count > 0) then
AutoReplyItem.Recipients.Text := TFbmItemEMailProperties(Item.Properties).ReplyTo.Text
else if Assigned(Item.From) then
AutoReplyItem.Recipients.Text := Item.From.Text;
end;
// In dieser Zeile werden die eingehenden Daten als Variablen in der automatischen Antwort zur Verfügung gestellt.
AutoReplyItem.Variables.NameValueText := Item.TextViewData;
AutoReplyItem.Save;
Item.Delete; // Hebt nur die "Antwort" als ausgehendes Element auf.
finally
AutoReplyItem.Free;
end;
end;
finally
DraftItem.Free;
end;
end.
AutoReplyItem: TFbmItem;
DraftItem: TFbmItem;
begin
DraftItem := TFbmItem.Create(ikEmail, 0);
try
DraftItem.DbQuery := DbQuery;
DraftItem.LoadAttachmentsContent;
DraftItem.Load(92);
if Item.Kind = DraftItem.Kind then
begin
AutoReplyItem := TFbmItem.Create(DraftItem.Kind, 0);
try
AutoReplyItem.Assign(DraftItem, [iaoAttachments, iaoProperties, iaoUserFields, iaoNowAsCreated], iasNew);
AutoReplyItem.State := isAnswer;
AutoReplyItem.TaskNumber.Assign(Item.TaskNumber);
AutoReplyItem.Classified.Assign(Item.Classified);
if Assigned(AutoReplyItem.Recipients) then
begin
if (Item.Kind = ikEmail) and (Item.Properties is TFbmItemEMailProperties) and (TFbmItemEMailProperties(Item.Properties).ReplyTo.Count > 0) then
AutoReplyItem.Recipients.Text := TFbmItemEMailProperties(Item.Properties).ReplyTo.Text
else if Assigned(Item.From) then
AutoReplyItem.Recipients.Text := Item.From.Text;
end;
// In dieser Zeile werden die eingehenden Daten als Variablen in der automatischen Antwort zur Verfügung gestellt.
AutoReplyItem.Variables.NameValueText := Item.TextViewData;
AutoReplyItem.Save;
Item.Delete; // Hebt nur die "Antwort" als ausgehendes Element auf.
finally
AutoReplyItem.Free;
end;
end;
finally
DraftItem.Free;
end;
end.
Das komplexere Beispiel ermöglicht zum Beispiel eine einfache Anbindung eines externen Systems. Dabei werden die E-Mails, welche an den Kunden gesendet werden sollen, von GREYHOUND generiert. Die externe Anwendung sendet nur eine E-Mail an ein von GREYHOUND überwachtes POP3-Postfach. Der Absender der E-Mail ist dabei der tatsächliche Empfänger (also zum Beispiel der Kunde). Die E-Mail selbst enthält nur Daten in der oben beschriebenen Form ("Name/Value"-Paare getrennt durch ein Gleichheitszeichen). Über ein entsprechendes Entwurfselement wird nun eine neue E-Mail generiert, mit den Variablen angereichert und an den Kunden versendet.