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

JohnLemon

Well-known member
20.08.2014
274
2
#1
Здравствуйте, может кто нибудь подсказать как отправить письмо со страницы xpages. Делаю так:
Код:
var doc = database.createDocument();
doc.replaceItemValue("Form", "Memo");
doc.replaceItemValue("Subject", "EvgenyNikolaev@asddsa.ru");
doc.replaceItemValue("SendTo", "user@gmail.com");
doc.send();
Он мне ошибку выдает
Exception occurred calling method NotesDocument.send() null
В чем может быть причина ?
 

JohnLemon

Well-known member
20.08.2014
274
2
#3
можно поподробнее, а лучше рабочий примерчик ) желательно с использванием html в body
 
Последнее редактирование модератором:

erdi

Well-known member
20.08.2008
265
17
#4
1-й вариант
Код:
var memo:NotesDocument = database.createDocument();
memo.appendItemValue("Form", "Memo");
memo.appendItemValue("Subject", "gujhgj");
memo.appendItemValue("Body", "4444ewewe");
memo.send(false, "user@lotusibm.srv");
2-й вариант
Код:
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();
 

JohnLemon

Well-known member
20.08.2014
274
2
#5
Блин ни один не работает, может я получателя не правильно указываю, где его можно посмотреть формат важен ?
тут
ошибка Exception occurred calling method NotesDocument.send(boolean, string) null
тут
var memo:NotesDocument = db.createDocument();
Ошибка Exception occurred calling method NotesDatabase.createDocument() null
[DOUBLEPOST=1425381616,1425381373][/DOUBLEPOST]Пытался через Action MailSend
Ошибка тоже Error sending MIME mail
Через клиента все отправляет в роде так
Код:
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
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#8
@JohnLemon, форум замечательно умеет подсвечивать LotusScript. Cложно сделать еще один клик и выбрать его из списка?
 

erdi

Well-known member
20.08.2008
265
17
#9
это говорит о том, что документ не создался в целевой БД
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 и он сам выберет любой доступный, а в вебе нужно указать точное название базы
 

JohnLemon

Well-known member
20.08.2014
274
2
#10
Код:
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();
Этот код заработал как добавил права ) ? Можете еще подсказать как модернизировать его что бы боди в хтмл отправить ? Но я так понимаю он менее безопасный если записывать док сразу в базу
 

alexas1

Lotus team
10.04.2014
723
144
#11
... Можете еще подсказать как модернизировать его что бы боди в хтмл отправить ? Но я так понимаю он менее безопасный если записывать док сразу в базу
В смысле, чтоб current page в письме увидели? - можешь конвертнуть её (или конкретный div) в какойнить граф.формат (в инете примеров тьма) и присовокупить к сообщению. А на безопасность, запись тобой дока в базу, не влияет, ну записал и записал.
Кста, если чо боишься, можешь для анонимусов сделать свой мэйлбокс со всякой повышенной секуритой.
 

JohnLemon

Well-known member
20.08.2014
274
2
#12
В смысле, чтоб current page в письме увидели?
Нет что бы текст письма был типо
Код:
<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();
Может кому полезно будет, но что со стилями беда, никак не хотят работать (
 
Последнее редактирование модератором:

JohnLemon

Well-known member
20.08.2014
274
2
#13
Может кто подсказать как стили добавить в данном примере? Что то вообще никак не хотят работать...
[DOUBLEPOST=1425527732,1425527540][/DOUBLEPOST]
@JohnLemon, форум замечательно умеет подсвечивать LotusScript. Cложно сделать еще один клик и выбрать его из списка?
Спасибо учту) не знал про фичу )
 

MaxP

Well-known member
02.12.2014
45
1
#16
Добрый день.

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 569
263
#17
отправить сам документ, изменив информацию на нужную
 

cLif

Well-known member
27.09.2010
50
4
#18
Добрый день.

Не подскажете как приаттачить файл к письму, хоть с диска, хоть из документа?
Для просмотра контента необходимо: Войти или зарегистрироваться


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

MaxP

Well-known member
02.12.2014
45
1
#19
способ 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";
}