使用附件xpages发送电子邮件

时间:2017-08-21 01:57:54

标签: xpages xpages-ssjs

这是我发送带附件的电子邮件的示例代码。单词的内容未正确发送。

enter image description here附件正在使用"文件上传"

//  write mail
var setdoc:NotesDocument = database.getProfileDocument("System Setting", "");
var server = setdoc.getItemValueString("MailDBSvr");
var dname = setdoc.getItemValueString("MailDbPath");
var web = setdoc.getItemValueString("InternetAddress");


var maildoc:NotesDocument = database.createDocument();
maildoc.replaceItemValue("Form", "Memo");
maildoc.replaceItemValue("Subject","Test Send Mail");
session.setConvertMime(false);
var stream = session.createStream();
stream.writeText("<html><body>");

stream.writeText("<p>Dear " + "[person]" + ",</p>");
stream.writeText("<p>Attached item is an image of </p>");
stream.writeText("<p> ***THIS IS AN AUTOMATED MESSAGE - PLEASE DO NOT REPLY DIRECTLY TO THIS EMAIL***</p>");
stream.writeText("</body></html>");

var body = maildoc.createMIMEEntity("Body");

var Att= document1.getDocument(true).getFirstItem("Attachment");
maildoc.copyItem(Att,"Body")    //  try adding an item

body.setContentFromText(stream, "text/html;charset=UTF-8", 1725);
stream.close();
maildoc.closeMIMEEntities(true);
session.setConvertMime(true);

maildoc.replaceItemValue("SendTo","TestUser1@devsvr1.pcs.com.my");      
maildoc.send(); 

结果出来的只是附件字段,里面没有任何文本值。我不确定哪一部分是错的。

示例结果屏幕:

enter image description here

enter image description here

enter image description here

推荐的Mime风格

var HTMLMail = function() {
...
}   
var mail = new HTMLMail();
mail.setTo("TestUser1@devsvr1.pcs.com.my")
//mail.addFileAttachment(result);
mail.setSubject("Test Send Mail");
mail.addHTML("<h1>Hi!</h1>");
mail.addHTML("<table><tbody><tr><td>contents in a table here</td></tr></tbody></table>");
mail.send();

2 个答案:

答案 0 :(得分:4)

IBM Notes / Domino有两种方式来显示“漂亮的单词和图片”

  • 富文本
  • MIME

你应该只使用其中一种,但在这里你实际上混合了不同的类型。

上面,当你复制附件项时,你实际上是在添加第一个'Body'项,你可以看到它的类型'RichText'。 然后我们你创建了你正在创建第二个'Body'项目的MimeEntity,它的类型是'MimePart'(它可能显示第二个,因为在CloseMimeEntities之前不会应用Mime) 所以现在你有2个不同部分的Body项目。您在Notes中看到了“RichText”附件,因为它是第一个列出的项目。

您实际需要做的是创建正确的多部分mime结构。 如果你想了解更多关于mime的信息,我在我的网站上发布了一篇博文,其中解释了一些,包括一些关于正确mime结构的信息。 http://camerongregor.com/2016/04/21/webmail-ui-you-must-learn-about-mime/

如果你还没有看到它,Mark Leusink有一个XSnippet,它有一个使用SSJS创建一个mime电子邮件的演示。我不自己使用它,因为我不使用SSJS但它可能对你有用,因为它应该为你处理大部分这个mime操作。 https://openntf.org/XSnippets.nsf/snippet.xsp?id=create-html-mails-in-ssjs-using-mime

答案 1 :(得分:0)

我的编码参考使用富文本样式:

var setdoc:NotesDocument = database.getProfileDocument("System Setting", "");
var server = setdoc.getItemValueString("MailDBSvr");
var dname = setdoc.getItemValueString("MailDbPath");
var web = setdoc.getItemValueString("InternetAddress");

var maildoc:NotesDocument = database.createDocument();
maildoc.replaceItemValue("Form", "Memo");
maildoc.replaceItemValue("Subject","Test Send Mail");
session.setConvertMime(false);
var stream = session.createStream();
stream.writeText("<html><body>");

stream.writeText("<p>Dear <b>" + "person" + "</b>,</p>");

stream.writeText("<p> ***THIS IS AN AUTOMATED MESSAGE - PLEASE DO NOT REPLY DIRECTLY TO THIS EMAIL***</p>");

stream.writeText("</body></html>");

var tmpDoc:NotesDocument = maildoc.getParentDatabase().createDocument();     
var mime:NotesMIMEEntity = tmpDoc.createMIMEEntity("myBody");
var addRt:NotesMIMEEntity = maildoc.getMIMEEntity("addBody");
var Att:NotesRichTextItem = document1.getDocument(true).getFirstItem("Attachment");
if(addRt != null && @Length(addRt.getContentAsText().trim()) > 28) {
    stream.writeText('<font size="2" face="sans-serif">');      // Enforce "simiilar" font type/size...
    stream.writeText(addRt.getContentAsText());
    stream.writeText('</font>');
}

mime.setContentFromText(stream, "text/html", NotesMIMEEntity.ENC_NONE);
var prevMime = session.isConvertMime();
session.setConvertMime(true);
tmpDoc.closeMIMEEntities(true,"myBody");
var rt:NotesRichTextItem = maildoc.getFirstItem("Body");
var body = null;
if (rt != null) {
    body = rt.copyItemToDocument(tmpDoc,"Body");
    rt.remove();
}
rt = maildoc.createRichTextItem("Body");
var rtMime:NotesRichTextItem = tmpDoc.getFirstItem("myBody");
rt.appendRTItem(rtMime);
if(Att != null) {
    if(addRt == null) rt.addNewLine(1);
    rt.appendRTItem(Att);
    Att.remove();
}
if(body != null) {
    rt.addNewLine(2);
    rt.appendRTItem(body);
}
if(addRt != null) {
    addRt.remove();
    addRt.recycle();
}



stream.close();
maildoc.closeMIMEEntities(true);
session.setConvertMime(true);

maildoc.replaceItemValue("SendTo","TestUser1@devsvr1.pcs.com.my");      
maildoc.send();