xpages在浏览器中邮件nsf

时间:2014-10-02 06:06:04

标签: xpages xpages-ssjs

我试图将字段值从应用程序传递到我在浏览器中打开的邮件数据库。

我得到了整个网址(我的第一反应:哇,好久)

https://server/MyName.nsf/($Inbox)/$new/?EditDocument&Form=h_PageUI&PresetFields=h_EditAction;h_New,s_NotesForm;Memo,s_ParentContentId;($Inbox)1,s_ViewName;(%24Inbox),s_InheritAttachment;false,s_SortOrder;1,s_SortColumnPN;$70&ui=portal

如何轻松引用收件人字段?来自邮件数据库的(To:字段)?

我想使用sessionScope选择所需的值,然后将其传递给上面的字段。

我在莲花笔记应用程序中使用类似这样的LotusScript做了上述要求:

Sub Click(Source As Button)
    // soome declarations
    Set db=s.CurrentDatabase
    Dim dcc As NotesDocumentCollection
    Set dcc = db.UnprocessedDocuments
    Dim item As NotesItem
    Set doc = dcc.GetFirstDocument
'   em$=doc.nms_Email(0)

    While Not (doc Is Nothing)
        If doc.HasItem ("nms_Email") Then 
            Set item=doc.GetFirstItem("nms_Email")
        Else
            If doc.HasItem ("txt_Email") Then 
                Set item=doc.GetFirstItem("txt_Email")
            Else
                Messagebox "No value for the field!"
                Exit Sub
            End If
        End If
        Forall e In item.values
            If Len(e) > 2 Then  em$=em$+e+"; "  
        End Forall
        Set doc=dcc.GetNextDocument(doc)
    Wend
    If em$=";" Then Exit Sub
    test$=Strleftback(em$, ";")
    var=Evaluate({@Explode("} & test$ & {"; ";")})
    var2=Evaluate("@MailDbName")
    mdb$=var2(1)
    msv$ =var2(0)
    Set dbm=s.GetDatabase(msv$, mdb$, False)
    Set docW = dbm.CreateDocument
    docW.form = "Memo"
    docW.SendTo=var
    Set uidoc = w.EditDocument(True,docW)

End Sub 

但是我怎么能在xpages中做同样的事情呢?

4 个答案:

答案 0 :(得分:1)

iNotes不是XPage应用程序(这就是URL太长的原因)。

您可以在"至"中创建一个包含相关值的新电子邮件。使用mailto:链接的字段。这是标准的Web开发功能,不是XPages或Domino专有的,因此有很多页面解释了这些功能。该功能使用用户计算机的默认邮件程序创建新邮件。我不确定iNotes的效果如何。

或者,iNotes文档可能会告诉您需要添加到URL中以将"设置为"字段。

答案 1 :(得分:1)

如果我理解正确,您希望生成一个在iNotes上组成新电子邮件的URL,即使它尚未配置为默认的电子邮件客户端。

简短的方法,使用hacky方法,将SendTo添加到网址中的PresetFields参数。

以下是您提供的网址:

https://server/MyName.nsf/($Inbox)/$new/?EditDocument&Form=h_PageUI&PresetFields=h_EditAction;h_New,s_NotesForm;Memo,s_ParentContentId;($Inbox)1,s_ViewName;(%24Inbox),s_InheritAttachment;false,s_SortOrder;1,s_SortColumnPN;$70&ui=portal

将修改为:

...&PresetFields=...othervalues...,SendTo;someEmailAddress&ui=portal

iNotes将为此参数提供Name1;Value1,Name1;Value1格式,而不是通常的查询字符串。所以,

单个电子邮件地址

SendTo;name@domain.com

SendTo;name@domain.com%2Canother@domain.com表示多个(%2c表示逗号。常用逗号用于分隔名称 - 值集)。

SendTo;name@domain.com,CopyTo;another@domain.com,Subject;Test,Body;Test以及其他选项。

当然,查询字符串是一个限制因素。你不能拥有太多的价值观。

Stephan解释了替代方案:要在邮件数据库中创建文档并使用:

https://server/mail/myname.nsf/0/unid?EditDocument
在这种情况下,

邮件数据库将默认为iNotes。但是,在这种情况下,您应该将文档保存到邮件数据库中。

答案 2 :(得分:0)

保罗的回答是一种方法。另一种方法是像在LotusScript中那样做。在邮件文件中创建一个文档,保存它(作为草稿),然后使用URL打开它。您可以使用打开手动创建的草稿的开发人员工具来确定所需的URL

答案 3 :(得分:0)

我的解决方案基于mailto:协议。根据{{​​3}},您可以将其与逗号分隔的地址列表一起使用。

要通过iNotes处理mailto:网址,您需要转到iNotes偏好设置,或使用此小黑客:wikipedia

您需要在XPage代码中执行的操作是正确的mailto:链接,并允许用户点击它。