いいね!数

0

閲覧数
153

メール送信用のフォームを用意し、そこに入力された宛先、件名、本文をメールで送信するような

仕組みをつくっています。

「送信」ボタンにsend()を書いてメールを送付しているのですが、本文であるリッチテキストを取得する

コードでエラーになってしまいました。コードは以下になります。

 var mldoc:NotesDocument = database.createDocument();    

-------省略--------

    var doc = document1.getDocument();

    var rtitem:NotesRichTextItem = doc.getFirstItem("Body"); 
    var mrtitem:NotesRichTextItem = mldoc.createRichTextItem("Body");
    mrtitem.appendRTItem(rtitem)  ←ここでエラー

 

エラーメッセージは以下の通りです。

JavaScript アクション式を実行中にエラーが発生しました
スクリプトインタープリタエラー、行=149、列=17: [TypeError] メソッド NotesRichTextItem.appendRTItem(null) を呼び出し中に例外が発生しました null

var rtitem:NotesRichTextItem = doc.getFirstItem("Body")の結果がnullとなってしまうのですが、なぜでしょうか?

解決のヒントを頂ければ助かります。

よろしくお願い致します。

カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:Jan 26, 2017 4:51:45 PM

回答・コメント

いいね!数

0

docの中に[Body]というフィールドか無いからだろう。

docはdocument1のバックエンドだからdocument1に[Body]がないと推測。

そもそもdocument1に[Body]があるはずと思う根拠はなんでしょう。

 

質問する時に、コードを開示するようになったのはいいこと。

だけど、わかるのはここまでだね。

/Yac

回答日時:Jan 27, 2017 12:15:07 AM

いいね!数

0

yac4423さん、

毎度の回答ありがとうございます。感謝です。

bodyフィールドはデータバインディングされているのですが、これではdocument1に[Body]があると

いうことにはならないのでしょうか?

意味不明なことを言っていたらすみません。

それか、新規作成時にはリッチテキストは認識されないということなのでしょうか??

回答日時:Jan 27, 2017 4:04:37 PM

いいね!数

0

> それか、新規作成時にはリッチテキストは認識されないということなのでしょうか??
LotusScript でも getFirstItem() で新規文書からリッチテキストの取得はできないのでそれは原因のひとつとしてあるかも知れません。

IBM Knowledge Center - GetFirstItem (NotesDocument - LotusScript)
http://www.ibm.com/support/knowledgecenter/ja/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_GETFIRSTITEM_METHOD.html



あとはやり方を変えて、リッチテキストエディタの内容をHTMLで取得してMIME形式で送信データを作るとか…
(私はやってみたことが無いですが XSnippet にサンプルがありました)

OpenNTF XSnippet: Create HTML mails in SSJS using MIME
https://openntf.org/XSnippets.nsf/snippet.xsp?id=create-html-mails-in-ssjs-using-mime

回答日時:Jan 27, 2017 6:03:43 PM

いいね!数

0

>>>
LotusScript でも getFirstItem() で新規文書からリッチテキストの取得はできないのでそれは原因のひとつとしてあるかも知れません。
<<<

おお、ホントだ。試してみたら編集中文書のリッチテキストにはうまくアクセスできませんね。

これまで、リッチテキストは最終結果を保存するために使用するだけで、編集中に使用するケースがなかったから気づかなかっただけかぁ。

いや、そういえば、保存時に添付ファイル情報を取得しようとしてうまくいかないことがあったけど、これが原因か。

またひとつ賢くなった:-)

さて、そういう制限があるとしたらどう乗り越えるか...

<xp:inputRichText>の中身がHTMLメールで送れるかどうかは別にして、保存後のサーバエージェントでメール送信するというのが一般的ですかねぇ。やったことないけど。

/Yac

回答日時:Jan 30, 2017 11:08:27 AM

いいね!数

0

ykawaさん、yac4423さん、

ご回答をありがとうございます。

「編集中文書のリッチテキストにはうまくアクセスできません」ということなのですね。。

ショックです。

「保存後のサーバエージェントでメール送信する」というのを試してみるしかなさそうですね。

それでやりたいことが実現できるか、試してみたいと思います。

また質問するかもしれませんが、よろしくお願いします。

回答日時:Jan 31, 2017 4:38:00 PM

いいね!数

0

保存後にサーバーエージェントでメール送信することをやってみたのですが、結果は

うまくいきませんでした。相変わらずリッチテキストは認識されないのです。

元の文書のbodyフィールドには新規作成時に文章が入っているのですが、ここのあらたに

文字を追加してからメール送信するとうまくいくのですが、文字を追加せず、既存の

文章をそのままメールで送ろうとするとエラーになってしまいます。

もう少し調べてまたコメントしたいと思います。

 

回答日時:Feb 8, 2017 2:36:41 PM

いいね!数

0

なぜか、メール送信まえにcsjsでアラートを出すとリッチテキストが認識されることが

わかりました。

出したアラートは以下です。

if(confirm('メールを送信します。よろしいですか?')){
}else{
return false;
}

これで本文を編集しなくても認識されます。

なぜだかは不明です。。

これでやっていきたいと思います。

回答日時:Feb 16, 2017 10:53:46 AM