powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Пытаюсь отправлять письма из Каше
16 сообщений из 16, страница 1 из 1
Пытаюсь отправлять письма из Каше
    #36836223
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одно сплошное раздражение, как будто с аксессом работаешь - вроде за тебя все решили и сделали, и остается нажать кнопочку - а начинаешь программить, и все как-то через задницу.

Суть вопроса - нужно сделать письмо с картинками, причем картинки должны быть как будто в теле письма, а как вложенные файлы видеться не должны. В целом с трудом но разобрался, в текстовом файле сделать получается, а в каше нет.

Делаю HTML-письмо, прикрепляю картинки как файлы, все пока нормально.
Потом мне нужно у этих картинок поставить Content-ID и тут затыка - метод установки Content-ID есть в классе %Net.MIMEPart, а в прикрепляются файлы как объекты класса %Net.MailMessagePart, хотя само поле Parts есть массив %Net.MIMEPart.
Причем сами %Net.MIMEPart и %Net.MailMessagePart в плане наследования друг другу и близко не родня.
Ок, хрен с тобой, золотая рыбка, делаю объект %Net.MIMEPart и пытаюсь его затолкать в массив Parts через SetAt. Низзя, говорит, <PRIVATE PROPERTY>

Что еще остается?
AttachNewMessage(), но он опять же, явно прикрепляет %Net.MailMessagePart
AttachEmail(mailmsg As %Net.MailMessage) тоже почему-то %Net.MIMEPart не прикрепил.
Издевательство какое-то.

Коротко - нужно прикрепить к письму(%Net.MailMessagePart) вложения типа %Net.MIMEPart
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36836245
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что тут сложного

кодируете картинки в Base64
письмо делаете в HTML формате и вставляете картинки в HTML, по типу этого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD
UUlEQVR42lWTWUwTURSGaUtIKY5QweISTUzceDGu0Rj1xURjTNQEE+ODGn0hPhBEQdqZztahBbrA
tFih1Fprh9IBiVLLErZSU7BUoS7VqNH44ovx0S0ovdfO4Ez04cw9Ofec7/5zzr15NEnkUxSVFx8O
bZ1x7nzHN6z9nOhnzOFwWCnECcKoEFbBRrrp6iF/XRvD0BoplkdTuAiIhtt3P3Fu+jJlKlkM1WoX
LFjVeSnpXrC94gV3ciJp1X0L1K7+NtDfvXdpj1TmmUwm8QTfLa867T+ceWTSwO5r5b87XNaDEoBr
v3p2Ai+AU1Qh5OiDGS4UXi4roAisQHBiYfJS2obAVPMyELYcGxViOIaKcLaNLXzadej5nBUBPXW6
hdYW0z4RQOYUXK2tUfr8QeXL0Kn4JKEBk7QWdtrrLggJJEmoCBxVCf50qIaaa0HABFkEPZaLNnGf
wPNFGV0u05Y554bvMQoBPLbxs9t9QydJpHP/KayRbsf+pG1NdgTTgDuGXa8dbS41ZtArxaQYT1Wl
HVqYaloGOcvJIan4X2MdViTl3vExbS+GPfXlvzzutj1LPch9HrYea59t0YIRtAAO+PQuIWYwNKik
Yty41Iuk/3TvMzsCB9HcQR7msgzgjZs7Z5rLQPR6PojeJW2d3oDCoG/IlwAYqlexbp/i9eB19ziu
BoMoAlrR03YZ0G8+0JFhS8EjuhD6zWfuCTEjppcBOKYX1bwaqA5MM2oYZ4pBy7XjrAyY7sPqU01F
cNZW/jtwZeXXVpt5u1RM4JhYzHFBddqz5/28fUU2NwngtVUbZUCE79o6x67/MYiXLiSbS8D9xp1v
I7znkLvDK07A5/MiT7mzdxMMAsdMqxaiWDHkgzePigBUXy9KTfdWeVKNSjjPrvv5uKkYxszlIHX7
eDLeVfkgbt30bt5eAlOOtT9nLRrI03szrOumOtcb4SrTSj2KKfr4nuUZ7kR8HFPAYXLlYqxRl43T
GjjTWAhHCC1MNK/+lWA0cJLRgfsh95G/N1H136z7+BCSuHMuMEGVLo4a1XCKKcuO0WXZBw1FcNig
hmPWbe8jIeeJpdFiCrkHguWUyM92NBKseBut8T92bfsw66z49IyrHH2T5CvlqeCYUvL/ANIZ7+oh
XSdWAAAAAElFTkSuQmCC">
в итоге не нужно делать вложения, только текст, только нужно указать, что письмо с HTML

надеюсь с кодированием в Base64, проблем не будет? и прикрепление HTML текста
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36836263
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, спасибо, не знал про такой метод. Так будет явно попроще.

Просто я знал только метод с прикреплением вложений и прописывание вложений по типу
<img src="cid:000.jpg">, но ваш метод мне уже заранее нравится (сегодня попробовать не смогу - ушел домой).
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36837653
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

круто. сколько в html пишу - впервые вижу ))) в IE 6.0 почему то не работает, в лисичке и в опере работает (подкова жёлтенькая)
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36837929
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на то он и IE6 :)
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36841539
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Факир был пьян и фокус не удался.
Если написать base64 текст в тело письма, то его там внутри перекодирует по второму разу в какую-то свою кодировку, в итоге все это превращается в хрен знает что и в итоге не читается.
Да и к тому же, как мне показалось, даже если письмо сгенерено правильно, то правильно разобрать его может не каждый почтовый клиент.
Тот же Оутлук экспресс 6, по-моему, такое не понимает.
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36844930
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

видимо поэтому все рекламные рассылки присылают логотипы аттачем а само письмо простым html
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36845225
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покопал я тут код %Net.SMTP, на предмет отправки сообщений
и пришел к выводу что стандартными средствами нельзя проставить Content-ID, и применить MIMEPart, тоже нельзя
но все равно у меня в Outlook нормально отображаются картинки, как в теле письма так и во вложении, но без указания Content-ID а только с указанием имени файла картинки
ну и разумеется письмо в формате HTML

Cache for Windows (x86-32) 2008.1.1 (Build 579U) Wed Jul 2 2008 15:39:29 EDT
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36860860
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мдя, тут и комплексам недолго начаться.
Проблема решилась в одно действие - выставлением заголовков вложений вручную, подсказали нечаянно в WRC.

Код: plaintext
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.
 S smtp=##class(%Net.SMTP).%New()
 s smtp.smtpserver="smtp.mail.ru"
 S smtp.port= 25 
 
 S email=##class(%Net.MailMessage).%New()
 S email.Subject="picture test"
 S email.From="xxx@mail.ru"
 D email.To.Insert("xxxk@mail.ru")
 S email.Charset="windows-1251"
 s email.IsHTML= 1 
 s email.IsMultiPart= 1 
 s email.MultiPartType="related" 
 
 d email.TextData.Write("<html>")
 d email.TextData.Write("<body>")
 d email.TextData.Write("<img src=""cid:phcell.gif"">")
 d email.TextData.Write("<span style='color:red;font-weight:bold'>P</span>hone")
 d email.TextData.Write("</body>")
 d email.TextData.Write("</html>")

 S sc1=email.AttachFile("e:\temp\","phcell.gif")
 w !,##class(%Status).LogicalToOdbc(sc1)
 S part=email.Parts.GetAt( 1 )
 D part.Headers.SetAt("phcell.gif","Content-ID")
 D part.Headers.SetAt("image/gif","Content-Type")
 S sc2=smtp.Send(email)
 w !,##class(%Status).LogicalToOdbc(sc2)
 Q
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36882942
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.

Было интересно сравнить Ваш код с кодом от chameleon82 .
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36890016
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL хороший язык работы с данными (хоть и не абсолютный).
Но меня удивляет, когда из SQL делают процедурный язык - вот такие извраты и получаются.
И вроде же явно не дурак это придумывал, но ощущение какой-то нелепой и глупо проделанной работы остается и избавиться от этого я не могу.

Справедливости ради надо сказать, он делал не совсем ту работу, что я, т.е. библитеки каше делают гораздо больше, чем те "библиотеки" оракла, которые использовал он. Т.е. вроде что-то и использовал, но в итоге всю работу делал сам.
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36890786
ывпрвап
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,

Вы недоумеваете, что разработчики IS не удосужились написать функцию WriteMessageBodyForBlockAH()?

Имейте совесть, вам дали хороший набор интерфейсов класса для обслуживания процесса создания и отправки письма, а то, что вы не знаете как работает почтовый протокол - ваши проблемы.

В доке каше этого описано быть не должно.
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #36890830
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ывпрвап]
Я конечно сам виноват, что путано изложил свою проблему.
Похоже, вы не поняли ни суть моей проблемы, ни способ ее решения.
Похоже вы не поняли даже, что проблема уже решена.
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #37097437
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет
подскажите а как несколько картинок послать(прикрепить) в письме?
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #37097450
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
отвечаю сам себе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
d m.AttachFile("C:\GEO\InterSystems\CSP\rtt\images","rtt.jpg")
 	d m.AttachFile("C:\GEO\InterSystems\CSP\rtt\images","ftr.jpg")
 	s part=m.Parts.GetAt( 1 )
 	d part.Headers.SetAt("rtt.jpg","Content-ID")
 	;d part.Headers.SetAt("ftr.jpg","Content-ID")
 	d part.Headers.SetAt("image/gif","Content-Type")
 	s part=m.Parts.GetAt( 2 )
 	;d part.Headers.SetAt("rtt.jpg","Content-ID")
 	d part.Headers.SetAt("ftr.jpg","Content-ID")
 	d part.Headers.SetAt("image/gif","Content-Type")
...
Рейтинг: 0 / 0
Пытаюсь отправлять письма из Каше
    #37097581
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, а в теле письма
d m.TextData.Write("<img src='cid:elka.jpg' style='float:left;margin:20px;clear:none;'>")
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Пытаюсь отправлять письма из Каше
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]