1

我在我的电子邮件中添加了一个按钮。

单击按钮后,将运行以下公式:

@If(disablebutton="1"; 
    @Return(@Prompt([Ok];"";"Thank you but you have already clicked once! :) "));
    @Prompt([Ok];"";"Thank you for the click! :) "));
@MailSend( "abc@xyz.com"; ""; "" ; "I will be present at the event!" ; 
            "" ; "" ; [PriorityNormal] );
FIELD disablebutton:="1";

上面的公式基本上做了以下事情:

if(disableButton is 1){
       Open prompt : you have already clicked and return without executing anything ahead
}else{
       Open prompt : Thank you for the click!
}

send email to the specified email address with specified subject

set disableButton = 1

因此,当收件人打开电子邮件时,上述公式限制收件人只能单击一次按钮,因此只有一封邮件被发送到指定的电子邮件地址。

然而,问题是,如果用户关闭邮件并再次打开,相同的公式会从头开始运行,这有效地允许接收者再次发送邮件。

如此有效地,他可以通过关闭和打开邮件并重新单击按钮将尽可能多的邮件发送到指定的电子邮件地址。

如何处理?我希望 disableButton 的值永久存在,以便邮件只发送一次。

4

2 回答 2

3

将以下行放在公式的末尾:

@If(@IsDocBeingEdited;
    @PostedCommand([FileSave]);
    @Do(    @PostedCommand([EditDocument]);
            @PostedCommand([FileSave]);
            @PostedCommand([EditDocument])))

仅当文档处于编辑模式并保存时,字段设置才会保留在文档中。通常,当用户阅读他们的电子邮件时,电子邮件处于阅读模式。您可以在@Command([EditDocument]);阅读和编辑模式之间切换。

如果电子邮件处于编辑模式,我们只需要保存文档。

如果电子邮件处于阅读模式,我们将文档更改为编辑模式,保存文档并将其设置回阅读模式。

于 2013-10-31T13:12:10.743 回答
0

尝试在 LotusScript 中实现相同的功能。它更容易 - 调试 - 那里。

dim uiws as new notesuiworkspace
dim uidoc as notesuidocument
dim disablebutton as string
dim doc as notesdocuemnt
set uidoc = uiws.currentDocument
disablebutton = uidoc.fieldgettext("DisableButton")
if(strcompare(disablebutton,"1",5)=0 then
messagebox {Thank you but you have already clicked once! :)}
else
call sendMail(uidoc.document)
set doc =uidoc.document
call doc.replaceitemvalue("DisableButton","1")
call doc.save(true,false)
call uidoc.close()
end if

SendMail 功能也需要实现。

于 2013-11-07T11:47:37.537 回答