Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/104: Рейтинг темы: голосов - 104, средняя оценка - 4.58
otyxkopustym
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 8
1

Отправка писем с форматированием из базы Lotus на внешнюю почту

10.11.2010, 10:23. Просмотров 18820. Ответов 5
Метки нет (Все метки)

Коллеги доброе время суток.
возможно повторюсь и подобное обсуждение было на форуме но прочел все и не нашел

проблемка вот в чем
есть лотусовая база - которая предназначеня для отправки писем из лотуса на внешние ящики
отлично все работает за исключением того что текст письма идет без форматирования. пропадает шрифт, разбивается таблица (вернее подставляется тире ----- и т.д.) в итоге приходящее письмо представляет из себя только текст.
вот примерно такой
_______________________________________________________________
gdfgfdgfdgkljdfo gjoidfgijdf
dfpgjkopfdopgifd

|------------------------------------+------------------------------------|
|jhk |hjk |
|------------------------------------+------------------------------------|
|hk |hjk |
|------------------------------------+------------------------------------|
________________________________________________________________


вот код на кнопку которая производит данную отправку

может поправите чуток
заранее спасибо



LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
(Declaration)
Dim wksp As NotesUIWorkspace
Dim session As notessession
Dim db As notesdatabase
Dim cuid As notesuidocument
Dim mailnote As notesdocument
Dim doc As notesdocument
Dim rtitem As notesrichtextitem
Dim OrigBody As NotesRichTextItem
Dim i%,j%,k%,ar%
Dim s$
Dim v,vn,vn1,ers As Variant
 
 
(Click)
 
Sub Click(Source As Button)
On Error Goto errhndl
Print "Рассылка -  Подготовка..."
Set wksp = New NotesUIWorkspace
Set session = New notessession
Set cuid=wksp.CurrentDocument
If cuid.edytmode Then
cuid.autoreload=False
On Error Goto saveerrhnd
Call cuid.save
On Error Goto errhndl
End If
Set db=session.currentdatabase
Set mailnote=New notesdocument(db)
Set doc=cuid.Document
mailnote.Form="Memo"
mailnote.Subject=doc.Subject
Set OrigBody = doc.GetFirstItem("Body")
Set rtitem= New notesrichtextitem(mailnote,"Body")
Call rtitem.AppendRTItem(OrigBody)
vn=doc.CList
vn1=doc.EList
v=doc.MList
k%=0
On Error Goto senderrhnd
For i%=0 To Ubound(v)
Print "Информационная рассылка - " + v(i%)
mailnote.SendTo=v(i%)
Call mailnote.Send(False)
loopfromerror:
Next i%
If k%>0 Then
Call showerrors()
End If
 
If doc.FlagMail(0)<>"1" Then
If cuid.autoreload=False Then ar%=True
cuid.autoreload=True
doc.FlagMail="1"
If cuid.edytmode Then
Call cuid.save
Else
Call doc.save(True,False)
Call wksp.viewrefresh
End If
If ar%=True Then cuid.autoreload=False
Else
If cuid.edytmode Then
doc.SaveOptions="0"
End If
End If
Msgbox "Операция завершена.",0,"Разослать..."
subend:
Print
Exit Sub
errhndl:
Msgbox "Произошла следующая ошибка:"+Chr$(10)+""+Error$+"",16,"Ошибка..."
If cuid.edytmode Then
Call cuid.reload
Call cuid.refresh
End If
Resume subend
saveerrhnd:
Resume subend
senderrhnd:
If k%=0 Then
Redym ers(0)
Else
Redym Preserve ers(k%)
End If
ers(k%) = vn(i%)+" "+vn1(i%)
k%=k%+1
If Msgbox("Не удается послать сообщение для:"+Chr$(10)+""+ers(k%-1)+"."+Chr$(10)+Chr$(10)+"Произошла следующая ошибка:"+_
Chr$(10)+""+Error$+""+Chr$(10)+Chr$(10)+_
"Продолжить рассылку ?",4+16,"Ошибка...")=6 Then
Resume loopfromerror
Else
Call showerrors()
Resume subend
End If
End Sub
 
 
 
(showerrors)
Sub showerrors()
Dim cd1 As New notesdocument(db)
cd1.Hid1=ers
cd1.Hid2="Не удалось отправить следующим:"
Call wksp.dialogbox("ForMemoWarning",True,True,True,True,True,False,"Внимание...",cd1)
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2010, 10:23
Ответы с готовыми решениями:

Аналог Principal на внешнюю почту...
Делаю так Set maildoc = New NotesDocument(db) maildoc.SendTo = &quot;Внешний...

Уведомления на почту в Lotus Notes
коллеги, доьрого времени суток столкнулся со следующей проблемой может кто...

Отправка писем пользователям...
Есть док в базе, и поле в котором есть имя пользователя. Нужно перед отправкой...

Отправка Писем Из Ms Office
Помогите разобраться со следующей ситуацией. Возникла необходимость...

Lotus, отправка сообщений
есть ли асп-компонеты по работе с лотусом или пример по использованию Lotus...

5
hosm
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
10.11.2010, 10:29 2
Есть настройка в неймс.нсф конвертации исходящих писем, там есть вариант From Notes to Plain Text. мб, это виновато?
(Server\Configuration) Configuration Settings закладка MIME - Conversion Options - Outbound
Outbound Conversion Options
Message content: from Notes to Plain Text
0
otyxkopustym
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 8
10.11.2010, 18:02 3
Цитата Сообщение от OKEN
Есть настройка в неймс.нсф конвертации исходящих писем, там есть вариант From Notes to Plain Text. мб, это виновато?
(Server\Configuration) Configuration Settings закладка MIME - Conversion Options - Outbound
Outbound Conversion Options
Message content: from Notes to Plain Text


да действительно нашел настройку
MIME - Параметры преобразования - Исходящие - Содержимое сообщения: было установлено : Преобразовать из формата Notes в формат сообщений Интернета
заменил на :
Создать смешанный вариант включая преобразование и инкапсуляцию (ДРУГОГО НЕ БЫЛО)

Отправил сообщение
пришло без изменения форматирования жирный шрифт, таблица все хорошо
НО
присоединился файл к каждому из сообщений : encap2.ond размером 300 kb

как от него избавиться не могу понять
0
otyxkopustym
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 8
11.11.2010, 11:23 4
посоветовали сделать вот так

через MIME
memo - документ письма, stream - объект NotesStream, содержащий html-код
Set mime=memo.createMIMEEntity("Body")
Call mime.setContentFromText(stream,"text/html;charset=windows-1251",ENC_IDENTITY_8BIT)
Call memo.CloseMIMEEntities(True,"Body")




решение вроде классное но я с mime не работал и врядли смогу сам реализовать. я понимаю что наглость, но может кто допишит код через mime, я его прикручу к базе и базу целиком выложу на сайт в библиотеку решений (зачем последователям изобретать велосипед, каждый просто под себя подкрутит) очень прошу....
0
susymmm
0 / 0 / 0
Регистрация: 12.10.2007
Сообщений: 522
12.11.2010, 16:37 5
попробуй так

Код
Dim s As New NotesSession
Dim db As NotesDatabase
Dim mime As NotesMIMEEntity
Dim memo As NotesDocument

Set db=s.CurrentDatabase
Set memo = db.CreateDocument
Set result = memo.CreateMIMEEntity("Body")
Dim hdr As NotesMIMEHeader
Set hdr = result.CreateHeader("MIME-Version")
Call hdr.SetHeaderValAndParams(|1.0|)

Set mime = result.CreateChildEntity( )
Dim stream As NotesStream

Set stream = s.CreateStream
s.ConvertMIME = False  Restore conversion

stream.WriteText {<body>Тут пишем html-текст</body>}
mime.SetContentFromText stream, "text/html; charset=Windows-1251", ENC_IDENTITY_8BIT
приаттачивание файлов
Set rtdoc=doc.GetFirstItem("Files")
If ( rtdoc.Type = RICHTEXT ) Then
If Not Isempty(rtdoc.EmbeddedObjects) Then
Set mime = result.CreateChildEntity( )
Forall object In rtdoc.EmbeddedObjects
If (object.Type = EMBED_ATTACHMENT ) Then
filepath =Environ("Temp")+"\"+Cstr(Object.Name)
Call object.ExtractFile(filepath)

tmpSource=Object.Source
i=i+1
NameSource:
If i=0 Then
Redym Preserve filenames(0)
filenames(0)=Object.Source
Else
For j=0 To Ubound(filenames)
If filenames(j)=tmpSource Then
tmpSource=Strleft(Object.Source,".")+Cstr(n)+"."+Strright(Object.Source,".")
n=n+1
Goto NameSource
End If
Next
tmpSource=Strleft(Object.Source,".")+"_"+Cstr(n-1)+"."+Strright(Object.Source,".")
Redym Preserve filenames(Ubound(filenames)+1)
filenames(Ubound(filenames))=tmpSource
End If

tmp=Evaluate({@ReplaceSubstring(@URLEncode("UTF-8";"}+Cstr(tmpSource)+{");"%";"=")})
filename="=?utf-8?Q?"+tmp(0)+"?="

Set mime = result.CreateChildEntity( )

Set hdr = mime.CreateHeader("Content-Disposition")
Call hdr.SetHeaderValAndParams(|attachment; filename="|+filename+|"|)
Set hdr = mime.createHeader("Content-ID")
Call hdr.setHeaderVal(filename)
Set stream = s.CreateStream
stream.Open filepath, "binary"
mime.SetContentFromBytes stream, |application/octet-stream; name="|+filename+|"|, ENC_BINARY
mime.EncodeContent ENC_BASE64
Kill filepath
End If
End Forall
End If
End If

Call memo.CloseMIMEEntities(True, "Body")
memo.SendTo ="Кому "
memo.Principal="От кого"
memo.INetFrom="От кого"
memo.Subject = "Тема"
Call memo.Send(False)
s.ConvertMIME = True  Restore conversion
0
ottyx
0 / 0 / 0
Регистрация: 10.09.2005
Сообщений: 560
14.11.2010, 15:06 6
А отправлять в HTML формате ?
0
14.11.2010, 15:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 15:06

Поле Sendto и отправка писем агентом
Уважаемые гуру, помогите кто чем может. Задача: Отправить агентом в...

SMTP: отправка на внешнюю почту
Привет всем. Появилась проблема, хостинг, на котором стоит мой сайт, ограничили...

Отправка писем на почту
idsmtp2.Host:='smpt.yandex.ru'; idsmtp2.Host:= IntToStr(25);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru