公司需要回报每天服务器的状态,写了一个infopath的表单放在了sharpoint的上面,每天我们去写,然后数据保存到sharpoint中,最后发送一份email报告给老板。
其实很简单,一个按钮里面submit2个动作:1、tosharepoint 2、email把这个两个数据源就好了。
但是这样发送email后只能是给出一个附件(当前报告的xml文件)
如果是察看者当时没有infopath就无法打开这个文件。
想个办法将他写一个摘要信息放到email的body里面。
使用
var objEmailAdapter;
objEmailAdapter = XDocument.DataAdapters("email_submit");
这样便可以自定义发送的东西
但是没有办法发送html文本。
于是查找资料,国内的几乎没有,到google的论坛上看,好像这个功能只能在2k7中实现。
不过查到了另外一个方法:使用 var objEmail = Application.ActiveWindow.MailEnvelope;
它可以将表单变成email的body填写之后他就抓出当时保存的数据发送,而且还可以写备注信息(可以加上超文本标记)比较爽!
但是还有一个问题就是3个方法都没有办法强行让客户发送电子邮。如果有人清楚如何操作请指点。
方法一:直接使用按钮中的规则,确认传输数据源(sumbit data connection)。
方法二:使用script,
var objEmailAdapter;
objEmailAdapter = XDocument.DataAdapters("email_submit");
objEmailAdapter.Subject = emailSubject;
 objEmailAdapter.Intro = emailContent;
objEmailAdapter.Submit();
方法三:使用var objEmail = Application.ActiveWindow.MailEnvelope
var objEmail = Application.ActiveWindow.MailEnvelope;
 objEmail.To = "email@email.com "
objEmail.Subject="Subject";
objEmail.Visible=true;

PS: 如何取infopath数据
XDocument.DOM.setProperty("SelectionNamespaces", 'xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-06-07T07:30:55"');//这个申明是在外面
emailSubject = XDocument.DOM.selectSingleNode("//my:myFields/my:Subject").text;
但是有一点疑惑,在sdk的example中没有使用//也没有使用my而是直接
('/myFields/Subject')在他的程序中我运行没有错误,我在自己的表单里面总是报告找不到对象。
真是不知道是什么。

posted on 2006-06-29 16:04  Mint  阅读(1184)  评论(0编辑  收藏  举报