powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отправка почты. Пример не понятен...
9 сообщений из 9, страница 1 из 1
Отправка почты. Пример не понятен...
    #37729145
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взял с постов пример/ Поясните, строка
(" http://schemas.microsoft.com/cdo/configuration....
обязательна, или можно применить другой параметр, например, просто "sendusing" ?!!! Или это судьба -пользоваться ссылкой?

*Кому

oMessage.To = "Administrator@nwtraders.msft"
*От кого
oMessage.From = "Administrator@nwtraders.msft"
*Заголовок сообщения
oMessage.Subject = "Проверка"
*Текст сообщения (может быть текстовым или в формате HTML)
oMessage.TextBody = "Текст письма"
*Добавляем вложение
oMessage.AddAttachment "C:\txt.txt"

oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

*Указать почтовый сервер можно так:
oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.YourServer.com"
*Настройка режима аутентификации производится при помощи того же объекта CDO.Configuration:
oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1
*Значение 1 этого параметра означает,
* что используется базовая аутентификация,
*значение 0 — без аутентификации (анонимно), *значение 2 — аутентификация NTLM.

*Имя пользователя и пароль можно передать точно так же:
oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/sendusername") = "YourLogin@YourDomain.com"
oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password"
* Иногда необходимо также
*определить использование специфического порта
* (отличного от 25), будет
* или нет использоваться SSL и время тайм-аута:

oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
oMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

*После любых изменений, вносимых в конфигурацию, изменения нужно обязательно сохранить:

oMessage.Configuration.Fields.Update

*и только после вызывать метод
Send():
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37729296
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, совсем забыл:

oMessage = CreateObject("CDO.Message")
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37729318
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем тебе ссылка помешала?
Ни разу не заморачивался на эту тему - интересно - попробуй без ссылки. Еще проверь идет ли обращение по ссылке, а то может это такая константа специфическая.
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37729445
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Нет. Иначе бы не спрашивал. Я хочу понять, кто знает какие параметры принимает эта процедура.
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37729500
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что конкретно не работает у тебя?
Тут я свой класс-обертку давал над CDO.Message
Тут например расписано зачем какие строчки.
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37729544
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Я вот и спрашиваю:
lcSchema = " http://schemas.microsoft.com/cdo/configuration/"
зачем и что это за стока. Можно ли использовать параметр осознанно?!
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37729794
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMDima T,
Я вот и спрашиваю:
lcSchema = " http://schemas.microsoft.com/cdo/configuration/"
зачем и что это за стока. Можно ли использовать параметр осознанно?!
ХЗ что это за строка. С ней работает - остальное неважно. Подробности где-то тут .
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37729923
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос остаётся актуальным !!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
Отправка почты. Пример не понятен...
    #37742997
Фотография Vladimir M Sklyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2FAM,

вот мой рабочий кусок для отправки отчетов автопилотом через почтовик на GMAIL-е, для отправки через другие - смените смтп и порты ну и принцип авторизации

Код: sql
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.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
*lcFileName =  имя файла, которое аттачим
*lcEmail = мыло, куда шлем

= snd(lcFileName, lcEmail)	



FUNCTION Snd 
LPARAMETERS lcFileName__, Email__

	lo=NEWOBJECT([SendMail])

	lo.Address=[smtp.gmail.com] && SMTP сервер
	lo.User=[...................................] && почтовый адрес пользователя для авторизации на сервисе
	lo.Password=[...................................] && пароль

	lo.SSL=1	    && использовать SSL
	lo.Port=465     && порт для SSL
	lo.Auth=1       && требуется аутентификация

	lo.From=[...................................] && от кого, e-mail
	lo.To  = ALLTRIM(Email__) && кому
	lo.CC  =[...................................] && доп копия, если нада

	lo.Subject=[...................................] && тема письма
	lo.Textbody=[.] && тело письма 

        lo.Files.Clear				&& при множественном использовании отправки файлов - очистка перед заполнением
        lo.Files.AddFile(lcFileName__) && аттачим файл для отправки

	*  lo.Compress=.T.					&& запакуем файлы перед отправкой
	lo.Compress=.F.					&& не упаковывать файло
	lo.Send

	RELEASE lo

RETURN 

**********************************************************************************************
DEFINE CLASS SendMail AS Session
	HIDDEN oCDO, oFSO, Schema
	oCDO  = .NULL.		&& объект для оправки сообщений
	oShell= .NULL.		&& объект для работы со сжатыми папками
	Files = .NULL.		&& коллекция прикрепляемых файлов
	Schema= [http://schemas.microsoft.com/cdo/configuration/]
	Compress=.F.		&& сжимать отправляемые вложения
	ZipFolder=[Attachment.zip]	&& имя сжатой папки с вложениями
	ZipInterval=0.1		&& 100 мс - частота опроса завершения архивирования
	
    From     = []		&& параметры отправителя (имя и адрес электронной почты)
	To       = []		&& адрес электронной почты получателя
	CC		 = []		&& походу копия кому еще слать
	Subject  = []		&& тема сообщения
	Textbody = []		&& текст сообщения
	Address  = []		&& адрес SMTP-сервера
	Port     = [25]		&& порт SMTP-сервера
	User     = []		&& имя пользователя для регистрации на сервере
	Password = []		&& пароль пользователя для регистрации на сервере
	Charset  = [windows-1251]	&& кодировка текста письма
	SSL      = 0		&& использование SSL
	Auth     = 0		&& аутентификация на сервере
	CTO      = 60		&& ConnectionTimeOut
	
	PROCEDURE Send
		this.oCDO=NEWOBJECT([CDO.Message])
		WITH this.oCDO						&& переопределим свойства для объекта CDO
		    .From     = this.From
			.To       = this.To
			.CC		  = this.CC
			.Subject  = this.Subject
			.BodyPart.Charset = this.Charset
			.Textbody = this.TextBody
			WITH .Configuration.Fields		&& настроим подключение
				.Item(this.Schema+"sendusing")     = 2             && Отправить сообщение используя сетевую SMTP-службу (1 - используется для отправки через локальную SMTP-службу)
				.Item(this.Schema+"laguagecode")   = [ru]
				.Item(this.Schema+"smtpserver")    = this.Address
				.Item(this.Schema+"smtpserverport")= this.Port
				.Item(this.Schema+"sendusername")  = this.User
				.Item(this.Schema+"sendpassword")  = this.Password
				.Item(this.Schema+"smtpusessl")            = this.SSL
				.Item(this.Schema+"smtpauthenticate")      = this.Auth
				.Item(this.Schema+"smtpconnectiontimeout") = this.CTO
				.Update                                       		&& Обновить конфигурацию CDO-объекта
			ENDWITH
			
			* если нужно сжать вложения
			IF this.Compress THEN
				IF this.ToZip() THEN
					.AddAttachment(FULLPATH(this.ZipFolder))
					.Send
				ENDIF				
				
			* если не нужно - прикрепляем все необходимые файлы
			ELSE
				FOR EACH lcFile IN this.Files
					.AddAttachment(m.lcFile)
				ENDFOR
				.Send
			ENDIF
			*-- и наконец отправляем
			*-- здесь мы не можем проконтролировать успешность отправки, как и сам ход оправки...
			*-- да это нам особенно и не нужно... системные сообщения будут выведены на экран...
*			.Send
			
		ENDWITH
		this.oCDO=.NULL.
	ENDPROC

	PROCEDURE ToZip
		this.oShell=NEWOBJECT([Shell.Application])
		LOCAL loError AS Exception
		DO WHILE FILE(this.ZipFolder)
			TRY
				DELETE FILE (this.ZipFolder)
			CATCH TO loError
				IF INKEY(this.ZipInterval)=27 AND 1=MESSAGEBOX([Файл ]+this.ZipFolder+[ не может быть удален]+CHR(13)+[Прервать?],1) THEN
					RETURN .F.
				ENDIF
			ENDTRY
		ENDDO
		
		* создадим пустой ZIP-файл
		STRTOFILE([PK]+PADR(CHR(5)+CHR(6),20,CHR(0)),this.ZipFolder)
		
		* поочередно добавляем файлы в зжатую папку
		FOR EACH lcFile IN this.Files
			this.oShell.NameSpace(FULLPATH(this.ZipFolder)).CopyHere(m.lcFile)
		ENDFOR
		
		* и ожидаем, когда все они туда попадут... Только после этого мы можем вернуть управление и отослать письмо...
		* к сожалению по другому никак не проверить, что все фалы заархивированы...
		DO WHILE this.oShell.NameSpace(FULLPATH(this.ZipFolder)).Items.Count=this.Files.Count
			INKEY(this.ZipInterval)
		ENDDO
		this.oShell=.NULL.
	ENDPROC
	
	PROCEDURE Init
		this.Files=NEWOBJECT([FilesCollection])
	ENDPROC
ENDDEFINE

DEFINE CLASS FilesCollection AS Collection
	PROCEDURE AddFile
		LPARAMETERS tcFileName AS String
		IF NOT TYPE([this.Item(]+LOWER(m.tcFileName)+[)])=[U] THEN
			this.Remove(LOWER(m.tcFileName))
		ENDIF
		this.Add(FULLPATH(m.tcFileName),LOWER(m.tcFileName))
	ENDPROC
	
	PROCEDURE RemoveFile
		LPARAMETERS tcFileName AS String
		this.Remove(LOWER(m.tcFileName))
	ENDPROC
	
	PROCEDURE Clear
		LOCAL liIndex AS Integer
		FOR m.liIndex=1 TO this.Count
			this.Remove(1)
		ENDFOR
	ENDPROC
ENDDEFINE
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отправка почты. Пример не понятен...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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