如何使用XPage将文本文件存储到特定文件夹中

时间:2018-08-10 07:37:13

标签: xpages lotus-notes xpages-ssjs ssjs

如何在项目文件夹中创建文本文件,我需要将此文件作为电子邮件附件发送。然后我需要删除该文件。

var textBuffer="BEGIN:VCALENDAR\r\nVERSION:2.0\r\n...END:VEVENT\r\nEND:VCALENDAR";

file = new java.io.File("c:\\Notes\\sample.ics");

//Create the file
if (file.createNewFile()){

print("File is created!");

}
else{

print("File already exists.");

}

//Write Content
writer = new java.io.FileOutputStream(file);

writer.write(textBuffer.getBytes());

writer.close();

var db:Database  = session.getDatabase("server name", "database name", false);

var doc:NotesDocument = database.createDocument();

doc.appendItemValue("Form", "Memo");

var nMime:NotesMIMEEntity = doc.createMIMEEntity();

var mimeHeader:NotesMIMEHeader;

mimeHeader = nMime.createHeader("To");

mimeHeader.setHeaderVal("email id");

mimeHeader = nMime.createHeader("Subject");

mimeHeader.addValText("Test Email", "UTF-8"); 

var stream:NotesStream = session.createStream();

var pathname:string = "c:\\Notes\\sample.ics";

if (stream.open(pathname, "binary")) {

    nMime.getContentAsBytes(stream);

    stream.close();

    }

nMime.setContentFromBytes(stream, "text/plain; charset=\"UTF-8\"",NotesMIMEEntity.ENC_NONE);

doc.send();

session.setConvertMIME(true);

该代码被执行后,我收到一封邮件,但没有附件。请帮助我找出这段代码出了什么问题。

2 个答案:

答案 0 :(得分:0)

您的问题有2个潜在答案:

a)对于“项目文件夹”,您是指本地计算机上的一个文件夹(运行浏览器的文件夹):为了安全起见,没有Web服务器可以指定下载位置。这是浏览器设置。为了安全起见。损坏用户的工作站太容易了。 唯一的方法是控制浏览器-这可能对集成用户有效,但对用户群无效。

b)“项目文件夹”是服务器(运行Domino的计算机)上的位置。在那里,您实例化FileOutputStream(一个Java对象)并执行相同的操作。 SSJS可以使用Java类。

如果您分享需要这样做的原因,则可以提出更好的解决方案。

答案 1 :(得分:0)

您需要一种完全不同的方法: -检查Notes中的Mime类 -创建多部分的mime文档 -将您的文本数据写入标记为附件的MIME部分

无需创建文件。另请参阅以下答案: When generating HTML email using MIME, can attachments be displayed in the Lotus Notes email body?

如果您坚持要创建物理文件:由于服务器端附加功能无法访问您的本地文件系统,因此您需要将其存储在服务器FileOutputStream样式中