Kürzlich wurde ich gebeten, einen E-Mail-Link in einem Pop-up zu erstellen, um Informationen über verwandte Datensätze zu senden. Aufbauend auf dem Beispiel zum Abrufen der Wartungshistorie, das hier<\/A> veröffentlicht wurde, fügen wir eine Schaltfläche hinzu, die eine E-Mail mit dieser Historie sendet. <\/P><\/P>Ein mailto-Link kann einige Elemente enthalten:<\/P>die E-Mail oder E-Mails, an die die Mail gesendet werden soll<\/LI>optional CC und\/oder BCC<\/LI>einen Betreff<\/LI>und einen Textkörper<\/LI><\/UL><\/P>Das HTML, das wir für die Schaltfläche verwenden, ist recht einfach. Es besteht aus einem Anker mit dem mailto-Link (expression\/expr1) und innerhalb dieses Ankers der Schaltfläche (siehe Zeilen 5 bis 7):<\/P><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/SPAN>b<\/SPAN><SPAN class="punctuation token">><\/SPAN><\/SPAN>Wartungshistorie:<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>b<\/span><span class="punctuation token">><\/span><\/span><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span> {expression\/expr0} <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>b<\/span><span class="punctuation token">><\/span><\/span>E-Mail-Historie:<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>b<\/span><span class="punctuation token">><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>a<\/span> <SPAN class="attr-name token">href<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>{expression\/expr1}<SPAN class="punctuation token">"<\/span><\/span><SPAN class="punctuation token">><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>img<\/span> <SPAN class="attr-name token">alt<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>Email<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="attr-name token">height<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>50<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="attr-name token">src<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>http:\/\/icons.iconarchive.com\/icons\/iynque\/ios7-style\/1024\/Mail-icon.png<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="attr-name token">width<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>50<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="punctuation token">\/><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>a<\/span><Spanclass=\"punctuationtoken\">><\/<Span></Span>><Spanclass=\"line-numbers-rows\"><Span><<EMOJI_1>><\/<Span}><Span><<EMOJI_2>><\/<Span}><Span><<EMOJI_3>><\/<Span}><Span><<EMOJI_4>><\/<Span}><Span><<EMOJI_5>><\/<Span}><Span><<EMOJI_6>><\/<Span}><Span><<EMOJI_7>><\/<Span>}<\/<Code></Pre>} es auf diese Weise zu tun. Die resultierende Zeichenkette enthält also die gesamte Historie in einer einzigen Zeile, und der Text <SPAN>"TextFormatting.NewLine" wird später verwendet, um ihn durch etwas zu ersetzen, das in einer URL verwendet werden kann und als neue Zeile in der E-Mail funktioniert ("%0D%0A").</SPAN></P><P></P><P><SPAN>Der andere Teil des Ausdrucks wird verwendet, um diese Funktion aufzurufen und die anderen Teile der E-Mail zu definieren:</SPAN></P><PRE class="lia-code-sample line-numbers language-none"><CODE><SPAN class="keyword token">var</SPAN> hydrant_id <SPAN class="operator token">=</SPAN> $feature<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"COD_HIDRANTE"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> email <SPAN class="operator token">=</SPAN> <SPAN class="string token">"someone@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> cc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"other_one@someplace.com;other_two@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> bcc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"secret_person@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> subject <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Maintenance history of Hydrant "</SPAN> <SPAN class="operator token">+</SPAN> hydrant_id<span class="punctuation token">;</span> <SPAN class="keyword token">var</span> body <span class="operator token">=</span> <span class="token function">GetHistory</span><span class="punctuation token">(</span>hydrant_id<span class="punctuation token">)</span><span class="punctuation token">;</span> <SPAN class="keyword token">var</span> params <span class="operator token">=</span> <span class="punctuation token">{</span>cc<span class="punctuation token">:</span> cc<span class="punctuation token">,</span> bcc<span class="punctuation token">:</span> bcc<span class="punctuation token">,</span> subject<span class="punctuation token">:</span> subject<span class="punctuation token">,</span> body<span class="punctuation token">:</span> body<span class="punctuation token">}</span><span class="punctuation token">;</span> <Span class="keyword token">var</Span> url <Span class="operator token">=</Span> <Span class="string token">"mailto:"</Span> <Span class="operator token">+</Span> email <Span class="operator token">+</Span> <Span class="string token">"?"</Span> <Span class="operator token">+</Span> <Span class="token function">UrlEncode</Span><Span class="punctuation token">(</Span>params<Span class="punctuation token">)</Span><Span class="punctuation token">;</Span> url <Span class="operator token">=</Span> <Span class="token function">Replace</Span><Span class="punctuation token">(</Span>url<Span class="punctuation token">,</Span> <Span class="string token">"TextFormatting.NewLine"</Span><Span class="punctuation token">,</Span> <Span class="string token">"%0D%0A"</Span><Span class="punctuation token">)</Span><Span class="punctuation token">;</Span> <Span class="keyword token">return</Span> url<span class="punctuation token">;</span><span class='line-numbers-rows'><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span>Lassen Sie uns erklären, was wir in diesem zweiten Teil des Arcade-Ausdrucks tun:Wir lesen die ID des Hydranten in Zeile 1 aus.Legen die E-Mails fest, an die die E-Mail gesendet werden soll (einschließlich 2 CC's und 1 BCC) in den Zeilen 2 bis 4.Der Betreff ist im Grunde ein Text, der die Variable hydrant ID enthält.Der Textkörper wird mit der oben erklärten Funktion GetHistory generiert.An den Zeilen 7 bis 10 erstellen wir ein Wörterbuch namens params mit den Eigenschaften cc, bcc, subject und body und weisen die Werte aus den Variablen cc, bcc, subject und body zu, die in den Zeilen 3 bis 6 definiert sind.An Zeile 12 verwenden wir die neue Arcade-Funktion UrlEncode, die in der Version 1.7 veröffentlicht wurde und die URL-Parameter korrekt kodiert.
<\/P>
Ein mailto-Link kann einige Elemente enthalten:<\/P>
Das HTML, das wir für die Schaltfläche verwenden, ist recht einfach. Es besteht aus einem Anker mit dem mailto-Link (expression\/expr1) und innerhalb dieses Ankers der Schaltfläche (siehe Zeilen 5 bis 7):<\/P>
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/SPAN>b<\/SPAN><SPAN class="punctuation token">><\/SPAN><\/SPAN>Wartungshistorie:<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>b<\/span><span class="punctuation token">><\/span><\/span><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span> {expression\/expr0} <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>b<\/span><span class="punctuation token">><\/span><\/span>E-Mail-Historie:<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>b<\/span><span class="punctuation token">><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>a<\/span> <SPAN class="attr-name token">href<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>{expression\/expr1}<SPAN class="punctuation token">"<\/span><\/span><SPAN class="punctuation token">><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>img<\/span> <SPAN class="attr-name token">alt<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>Email<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="attr-name token">height<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>50<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="attr-name token">src<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>http:\/\/icons.iconarchive.com\/icons\/iynque\/ios7-style\/1024\/Mail-icon.png<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="attr-name token">width<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>50<SPAN class="punctuation token">"<\/span><\/span> <SPAN class="punctuation token">\/><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>a<\/span><Spanclass=\"punctuationtoken\">><\/<Span></Span>><Spanclass=\"line-numbers-rows\"><Span><<EMOJI_1>><\/<Span}><Span><<EMOJI_2>><\/<Span}><Span><<EMOJI_3>><\/<Span}><Span><<EMOJI_4>><\/<Span}><Span><<EMOJI_5>><\/<Span}><Span><<EMOJI_6>><\/<Span}><Span><<EMOJI_7>><\/<Span>}<\/<Code></Pre>} es auf diese Weise zu tun. Die resultierende Zeichenkette enthält also die gesamte Historie in einer einzigen Zeile, und der Text <SPAN>"TextFormatting.NewLine" wird später verwendet, um ihn durch etwas zu ersetzen, das in einer URL verwendet werden kann und als neue Zeile in der E-Mail funktioniert ("%0D%0A").</SPAN></P><P></P><P><SPAN>Der andere Teil des Ausdrucks wird verwendet, um diese Funktion aufzurufen und die anderen Teile der E-Mail zu definieren:</SPAN></P><PRE class="lia-code-sample line-numbers language-none"><CODE><SPAN class="keyword token">var</SPAN> hydrant_id <SPAN class="operator token">=</SPAN> $feature<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"COD_HIDRANTE"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> email <SPAN class="operator token">=</SPAN> <SPAN class="string token">"someone@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> cc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"other_one@someplace.com;other_two@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> bcc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"secret_person@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> subject <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Maintenance history of Hydrant "</SPAN> <SPAN class="operator token">+</SPAN> hydrant_id<span class="punctuation token">;</span> <SPAN class="keyword token">var</span> body <span class="operator token">=</span> <span class="token function">GetHistory</span><span class="punctuation token">(</span>hydrant_id<span class="punctuation token">)</span><span class="punctuation token">;</span> <SPAN class="keyword token">var</span> params <span class="operator token">=</span> <span class="punctuation token">{</span>cc<span class="punctuation token">:</span> cc<span class="punctuation token">,</span> bcc<span class="punctuation token">:</span> bcc<span class="punctuation token">,</span> subject<span class="punctuation token">:</span> subject<span class="punctuation token">,</span> body<span class="punctuation token">:</span> body<span class="punctuation token">}</span><span class="punctuation token">;</span> <Span class="keyword token">var</Span> url <Span class="operator token">=</Span> <Span class="string token">"mailto:"</Span> <Span class="operator token">+</Span> email <Span class="operator token">+</Span> <Span class="string token">"?"</Span> <Span class="operator token">+</Span> <Span class="token function">UrlEncode</Span><Span class="punctuation token">(</Span>params<Span class="punctuation token">)</Span><Span class="punctuation token">;</Span> url <Span class="operator token">=</Span> <Span class="token function">Replace</Span><Span class="punctuation token">(</Span>url<Span class="punctuation token">,</Span> <Span class="string token">"TextFormatting.NewLine"</Span><Span class="punctuation token">,</Span> <Span class="string token">"%0D%0A"</Span><Span class="punctuation token">)</Span><Span class="punctuation token">;</Span> <Span class="keyword token">return</Span> url<span class="punctuation token">;</span><span class='line-numbers-rows'><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span>
Lassen Sie uns erklären, was wir in diesem zweiten Teil des Arcade-Ausdrucks tun:
Wenn Sie Fragen haben, verwenden Sie bitte die Schaltfläche "Add a Reply", um mich wissen zu lassen.
Der verwendete endgültige Code ist unten aufgeführt:
Function
@XanderBakker this is very useful - thank you! I'm wondering if you have a way for handling single quotes in fields. We have a content_ field in our data that often includes single apostrophes. Unfortunately, when we click our mailto link from the pop-up, the content_ field will not populate past the '. For example, the content_ field value might be "Michigan's 16 presidential electors have cast their votes...etc." When you click the mailto html link, only "Michigan" will populate. As a temporary fix we have used:
var content = Replace($feature.content_, "'", "")
However, the grammar is not correct. Any suggestions?
Hi @RiannaAylward ,
Sorry for the delay in my reply, I was (and still am) on vacation.
First of all, I have noticed some problems with this arcade expression after an update was applied to ArcGIS Online (more than a year ago), so it might not work anymore.
However, the correct way of changing characters and create a valid URL is not using the Replace function, but the UrlEncode function as shown in the code. This function will replace any invalid characters by its valid representation in a URL: https://developers.arcgis.com/arcade/function-reference/text_functions/#urlencode
Hi @XanderBakker
This is super useful and I am trying to get it to work with a Survey123 feature edit workflow, where the URL opens automatically the associated feature in Survey123. However, I can't seem to get the globalid to be seen as part of the URL. I've tried a lot of variations at this point combining Arcade field cals as well as use of {globalid} directly in the mailto: field in the pop-ups and haven't had any luck -- do you have any suggestions?
Example of the issue:
I'm working in Enterprise 10.8.1.
Thank you!
@XanderBakker Hi Xander, thanks for posting this!
Do you know if the pop-up example picture links you provided are down? They don't seem to load for me so its a little difficult to follow the post in its entirety.
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registrieren Sie ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.