Отправка письма..

Тема в разделе "Lotus - Xpages", создана пользователем JohnLemon, 2 мар 2015.

  1. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Здравствуйте, может кто нибудь подсказать как отправить письмо со страницы xpages. Делаю так:
    Код (Text):
    var doc = database.createDocument();
    doc.replaceItemValue("Form", "Memo");
    doc.replaceItemValue("Subject", "EvgenyNikolaev@asddsa.ru");
    doc.replaceItemValue("SendTo", "user@gmail.com");
    doc.send();
    Он мне ошибку выдает
    В чем может быть причина ?
     
  2. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    или создавай и сохраняй документ в db mail.box или вставь доп параметры в методе send
     
    2 пользователям это понравилось.
  3. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    можно поподробнее, а лучше рабочий примерчик ) желательно с использванием html в body
     
    #3 JohnLemon, 2 мар 2015
    Последнее редактирование модератором: 2 мар 2015
  4. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    1-й вариант
    Код (Text):
    var memo:NotesDocument = database.createDocument();
    memo.appendItemValue("Form", "Memo");
    memo.appendItemValue("Subject", "gujhgj");
    memo.appendItemValue("Body", "4444ewewe");
    memo.send(false, "user@lotusibm.srv");
    2-й вариант
    Код (Text):
    var db:NotesDatabase = session.getDatabase("servername", "mail1.box");
    var memo:NotesDocument = db.createDocument();
    memo.appendItemValue("Form", "Memo");
    memo.appendItemValue("Subject", "gujhgj");
    memo.appendItemValue("Body", "4444ewewe");
    memo.appendItemValue("SendTo", "user@lotusibm.srv");
    memo.appendItemValue("Recipients", "user@lotusibm.srv");
    memo.appendItemValue("EnterSendFrom", "Отправитель");
    memo.appendItemValue("Principal", "Отправитель");
    memo.appendItemValue("INetFrom", "Отправитель");
    memo.appendItemValue("SMTPOriginator", "Отправитель");
    memo.appendItemValue("From", "Отправитель");
    memo.appendItemValue("PostedDate", "1);
    memo.save();
     
    2 пользователям это понравилось.
  5. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Блин ни один не работает, может я получателя не правильно указываю, где его можно посмотреть формат важен ?
    тут
    ошибка Exception occurred calling method NotesDocument.send(boolean, string) null
    тут
    Ошибка Exception occurred calling method NotesDatabase.createDocument() null
    [DOUBLEPOST=1425381616,1425381373][/DOUBLEPOST]Пытался через Action MailSend
    Ошибка тоже Error sending MIME mail
    Через клиента все отправляет в роде так
    Код (Text):
    Sub Click(Source As Button)
        Dim session As New NotesSession
        Dim mail As notesdocument
        Set mail = New Notesdocument(session.CurrentDatabase)
        Dim richText As New NotesRichTextItem(mail, "Body")
        mail.SendTo = "vasily/dasd"
        mail.Subject = "MailSubject"
        mail.bodyHtml = "dasd"
        mail.Body = "<p>asdasd</p>"
        Call mail.Send( False )
    End Sub
     
  6. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    ACL веб юзера для почты. Доступ посмотри.
     
    2 пользователям это понравилось.
  7. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    А можете подсказать на какой вкладке хотя бы ). А что от анонимуса вообще нельзя отправлять почту ?
     
  8. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    @JohnLemon, форум замечательно умеет подсвечивать LotusScript. Cложно сделать еще один клик и выбрать его из списка?
     
  9. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    это говорит о том, что документ не создался в целевой БД
    var memo:NotesDocument = database.createDocument(); - это текущая БД. Смотри Access Control для ананимуса(или под кем ты авторизовался) право создания документов в текущей БД
    var db:NotesDatabase = session.getDatabase("servername", "mail1.box"); - это БД mail.box. Для нее ананимусу разрешено создавать документы по-умолчанию, но здесь надо смотреть сколько mail.box у тебя на сервере. По-умолчанию mail.box на сервере 1 и тогда она называется просто mail.box. Если их несколько, тогда в названии присутствует еще и порядковый номер, у меня их 4 на сервере, поэтому в моем примере используется mail1.box. Странно то, что на клиенте можно просто указать mail.box и он сам выберет любой доступный, а в вебе нужно указать точное название базы
     
  10. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Код (Text):
    var db:NotesDatabase = session.getDatabase("servername", "mail1.box");
    var memo:NotesDocument = db.createDocument();
    memo.appendItemValue("Form", "Memo");
    memo.appendItemValue("Subject", "gujhgj");
    memo.appendItemValue("Body", "4444ewewe");
    memo.appendItemValue("SendTo", "user@lotusibm.srv");
    memo.appendItemValue("Recipients", "user@lotusibm.srv");
    memo.appendItemValue("EnterSendFrom", "Отправитель");
    memo.appendItemValue("Principal", "Отправитель");
    memo.appendItemValue("INetFrom", "Отправитель");
    memo.appendItemValue("SMTPOriginator", "Отправитель");
    memo.appendItemValue("From", "Отправитель");
    memo.appendItemValue("PostedDate", "1);
    memo.save();
    Этот код заработал как добавил права ) ? Можете еще подсказать как модернизировать его что бы боди в хтмл отправить ? Но я так понимаю он менее безопасный если записывать док сразу в базу
     
  11. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    В смысле, чтоб current page в письме увидели? - можешь конвертнуть её (или конкретный div) в какойнить граф.формат (в инете примеров тьма) и присовокупить к сообщению. А на безопасность, запись тобой дока в базу, не влияет, ну записал и записал.
    Кста, если чо боишься, можешь для анонимусов сделать свой мэйлбокс со всякой повышенной секуритой.
     
  12. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Нет что бы текст письма был типо
    Код (Text):
    <span>HelloWord</span>
    Я нашел уже так
    Код (Javascript):
    session.setConvertMime(false);
        var stream = session.createStream();
        stream.writeText("<span>HelloWord</span>");
        var body = memo.createMIMEEntity("Body");
        body.setContentFromText(stream,"text/html;charset=UTF-8", 1725);
        stream.close();
        memo.closeMIMEEntities(true);
        session.setConvertMime(true);
    //end covert html
     
    //send mail
    memo.convertToMIME(NotesDocument.CVT_RT_TO_HTML);
    memo.save();
    Может кому полезно будет, но что со стилями беда, никак не хотят работать (
     
    #12 JohnLemon, 4 мар 2015
    Последнее редактирование модератором: 11 мар 2015
  13. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Может кто подсказать как стили добавить в данном примере? Что то вообще никак не хотят работать...
    [DOUBLEPOST=1425527732,1425527540][/DOUBLEPOST]
    Спасибо учту) не знал про фичу )
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    в xPages - это JavaScript
     
  15. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    ок )
    А про css в теле письма подскажет кто, или может пример какой кинет?
     
  16. MaxP

    MaxP Active Member

    Регистрация:
    2 дек 2014
    Сообщения:
    35
    Симпатии:
    3
    Добрый день.

    Не подскажете как приаттачить файл к письму, хоть с диска, хоть из документа?
     
  17. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    отправить сам документ, изменив информацию на нужную
     
  18. cLif

    cLif Active Member

    Регистрация:
    27 сен 2010
    Сообщения:
    35
    Симпатии:
    0
    https://openntf.org/XSnippets.nsf/snippet.xsp?id=create-html-mails-in-ssjs-using-mime

    можно так же переписать на Java / создавать не в текущей, а в mail.box, код от этого принципиально не меняется.
    Это так же к вопросу отправки html писем.
     
  19. MaxP

    MaxP Active Member

    Регистрация:
    2 дек 2014
    Сообщения:
    35
    Симпатии:
    3
    способ 1:
    берем документ в котором есть вложение, подменяем форму на мемо, поля на почтовые и отправляем командой doc.send()
    способ 2:
    берем документ в котором есть вложение, вложение копируем в поле.
    var files:NotesRichTextItem = Doc.getFirstItem("files");
    Создаем документ по форме мемо, присваиваем поля, копируем в поле body вложение из другого дока
    var RTBody:NotesRichTextItem=mailmemoDoc.copyItem(files,"Body");
    и отправляем командой doc.send()
    способ 3:
    var currentDB:NotesDatabase=session.getCurrentDatabase(); // Set your current database
    var mailmemoDoc:NotesDocument=currentDB.createDocument(); // creare bew maildoc document
    mailmemoDoc.replaceItemValue("Form","Memo"); // Mail memo form
    mailmemoDoc.replaceItemValue("SendTo","xxx@xxx.ru"); // your mail address
    mailmemoDoc.replaceItemValue("Subject","Mail sent using approach #2"); // Mail Subject
    var RTBody:NotesRichTextItem=mailmemoDoc.createRichTextItem("Body"); // set body to Item as notes richest item
    // Add some text and the attachment
    RTBody.addNewLine(1)
    RTBody.appendText("Some text...")
    RTBody.addNewLine(2)
    RTBody.embedObject(1454,"","c:\\file1.txt",null);
    RTBody.addNewLine(2)
    RTBody.embedObject(1454,"","c:\\file2.txt",null);
    RTBody.addNewLine(1)
    RTBody.update(); // update method to update the rich text item in memo form to process all pending rich text items
    mailmemoDoc.send(); // send mail command

    что также использует send()

    правда, я 3-й не тестировал, и в примере еще есть для beforePageLoad зачем - то

    var stream:NotesStream = session.createStream();
    if (stream.open("c:\\file1.txt", "ASCII")) {
    if (stream.isReadOnly()) {
    requestScope.status = filepath + " is read-only";
    return;
    }
    stream.truncate();
    stream.writeText("someText",NotesStream.EOL_CRLF);
    stream.close();
    } else {
    requestScope.status = "Output file open failed";
    }
    if (stream.open("c:\\file2.txt", "ASCII")) {
    if (stream.isReadOnly()) {
    requestScope.status = filepath + " is read-only";
    return;
    }
    stream.truncate();
    stream.writeText("someText",NotesStream.EOL_CRLF);
    stream.close();
    } else {
    requestScope.status = "Output file open failed";
    }
     
Загрузка...

Поделиться этой страницей