欺骗展望以为我提交的InfoPath表单是不是XML

问题描述 投票:0回答:2

我继承产生InfoPath表单的应用程序。我需要让表格可通过电子邮件,而离线提交添加功能。我们的想法是,该表格可在离线填写,然后通过电子邮件发送,然后通过检查收件箱提交其他应用程序进行处理。

不幸的是我必须使用服务器上的WebDAV代码来检查电子邮件收件箱,相当于到Outlook Web Access。 OWA块XML文件或剥离的XML出来的文件。我试着以编程方式设置附件的名称,另一部分但不工作,Outlook必须读取所有文件,如果找到XML标签,需要它的文档。

我也尝试了改变第一线的表格和提交一个。我改变了<?xml version="1.0"<?xsl version="1.0"。有效!似乎只要Outlook不会找到“XML”字符串,那么它不认为它的XML文档。

目前,我提交表单编程使用按钮和一些JS。

有什么办法在提交之前,我可以修改的原始数据?即,改变开口XML标签XSL。或许更改编码?或模糊的文件或什么吗?

总之,我需要欺骗的前景,以为提交的表单不是XML。该解决方案必须包含一个XSN内的自我。

编辑:使用InfoPath 2003年不确定的Exchange版本,但我认为它的2003还。

xml email infopath
2个回答
0
投票

你可以加密文件弄成Outlook无法看到的 - 换句话说,一个二进制文件?听起来有点像隐写术(隐藏的信息),但如果你将数据编码成一些其他二进制对象是什么 - 也许像的图像?


0
投票

我以前也使用过这一点,工作非常出色。虽然这是几年前了。它的工作对Exchange 2003中不知道它的工作原理免受汇率2008年虽然。

Public Function retrieve() As Boolean
    Dim allOK As Boolean = True
    Dim rec As ADODB.Record
    Dim rs As ADODB.Recordset
    Dim url As String
    Dim sql As String
    Dim iMessage As CDO.Message = New CDO.MessageClass
    Dim numAttachments As Integer
    Dim DeleteEmail As Boolean = False
    Dim EmailsFound As Integer = 0
    Try

        rec = New ADODB.Record
        rs = New ADODB.Recordset

        url = "Url to outlook web access inbox"

        rec.Open(url, , ConnectModeEnum.adModeReadWrite, , , AppSettings(MAILBOX_USERNAME), AppSettings(MAILBOX_PASSWORD))

        ' Build the SQL query for the messages.
        sql = "select "
        sql = sql & " ""urn:schemas:mailheader:subject"""
        sql = sql & ", ""urn:schemas:httpmail:hasattachment"""
        sql = sql & ", ""DAV:href"""
        sql = sql & ", ""urn:schemas:httpmail:from"""
        sql = sql & " from scope ('shallow traversal of "
        sql = sql & """" & url & """" & "') "

        If IsDebugEnabled Then log.Debug("retreieveEmails() - Opening Recordset:" & sql)


        ' Open the recordset.
        rs.Open(sql, rec.ActiveConnection, CursorTypeEnum.adOpenUnspecified, LockTypeEnum.adLockOptimistic)

        If Not rs.BOF And Not rs.EOF Then
            rs.MoveFirst()
            ' Loop through all of the messages in the recordset

            Do Until rs.EOF
                EmailsFound += 1
                DeleteEmail = False


                If Not rs.Fields("urn:schemas:mailheader:subject").Value Is System.DBNull.Value Then
                    iMessage.DataSource.Open(System.Convert.ToString(rs.Fields("DAV:href").Value), rec.ActiveConnection, ADODB.ConnectModeEnum.adModeRead, ADODB.RecordCreateOptionsEnum.adFailIfNotExists, ADODB.RecordOpenOptionsEnum.adOpenSource, "", "")
                    'Check that the Attachment is an XML file
                    For Each objAttachment As CDO.IBodyPart In iMessage.Attachments
                        If CStr(objAttachment.FileName & "").ToUpper.EndsWith(".XML") Then
                            'Save the Attachment off
                            objAttachment.SaveToFile(IO.Path.Combine(AppSettings(TEMP_IN_DIR), objAttachment.FileName))
                            DeleteEmail = True
                        End If
                    Next
                End If

                If DeleteEmail Then
                    delete(rs.Fields("DAV:href").Value)
                End If
                rs.MoveNext()
            Loop
        Else
            ' No Emails Found
        End If


        Return True
    Catch e As Exception
        'Log the error
        Return False
    Finally
        Try
            rs.Close()
        Catch
        End Try
        Try
            rs = Nothing
        Catch
        End Try
        Try
            rec.Close()
        Catch
        End Try
        Try
            rec = Nothing
        Catch
        End Try
    End Try

End Function
© www.soinside.com 2019 - 2024. All rights reserved.