www.boolean.name

www.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_smtp2 - Отправка почты с авторизацией (http://forum.boolean.name/showthread.php?t=8710)

odd 24.07.2009 22:44

Lib_smtp2 - Отправка почты с авторизацией
 
Вложений: 2
По просьбе AVIZO выкладываю переделанную версию библиотеки LIb_smtp.
Функции:

account(string login, string passwd) - Задать имя и пароль для доступа к серверу
login - имя пользователя
passwd - пароль

auth_mode(int i)
0 - сервер не требует авторизации
1 - использовать авторизацию (через имя и пароль, указанный функцией account)

integer send(string smtp, int port, string from, string to, string subject, string msg) - Отправить письмо
smtp - адрес почтового SMTP сервера
port - порт SMTP сервера (обычно 25, но бывает и другой)
from - от кого письмо (многие сервера не пропускают письма если FROM отличается от логина на сервер)
to - адрес получателя письма
subject - тема (заголовок) письма
msg - сам текст письма
Возвращает 1 - всё ОК или 0 - какая-то ошибка

Простейший пример для сервера MAIL.RU (остальные - аналогично):
PHP код:

Program SMTP2test;
Uses smtp2;
Var 
iinteger;
    
fromtosubjtextstring;
Begin
    smtp2
.account('lib_test''123456'); // Логин и пароль от MAIL.RU ящика
    
smtp2.auth_mode(1); // 1 - значит, что SMTP сервер требует авторизации
    
from:='lib_test@mail.ru'// от кого
    
to:='odd-coder@yandex.ru'// кому
    
subj:='Test msg'// Тема письма
    
text:='Hi there! Привет!'// Текст письма
    
i:=smtp2.send('smtp.mail.ru'2525fromtosubjtext);
    if (
i=1DrawText('Отправлено'55);
    else 
DrawText('Ошибка отправки'55);
    
RepaintDelay(5000);
End


AVIZO 26.07.2009 09:05

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Есть проблема - не могу отправить именно с трубы. С компа (на эмуляторе) уходит, с мобилы, подключенной к компу то-же. А вот с мобилы через ЖПРС не хочет. ЖПРС настроен и проверен. Прога выдает инфу, что все путем, а письмо на адресат не приходит. Оператор - МТС Украина, трубка - Motorolla MPx200, WinMobile 6.1

odd 26.07.2009 22:22

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Ладно, потестирую. Может узнаю в чем проблема.

abcdef 27.07.2009 06:17

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
так делать опасно, если письмо не уйдет - пользователь не узнает об этом, лучше совместить статьи ниже и сделать реализацию протокола сразу в MP c библиотекой sock
http://forum.boolean.name/showthread.php?t=5733
http://forum.boolean.name/showthread.php?t=7471

AVIZO 27.07.2009 08:22

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
А можно тогда какой-нибудь работающий способ отправить с трубы данные?

odd 27.07.2009 14:49

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Вложений: 1
Уже нашел в чем была проблема.
Просто данные выпуливались слишком быстро и SMTP сервер не успевал их разбирать. Добавление простой паузы решило всю проблему.

Тестировал на таком примере:
PHP код:

Program SMTP2test;
Uses smtp2;
Var     
iinteger;
        
fromrcptsubjtext string;
Begin
    ShowForm
;
    
i:=FormAddString('Начинаем отправку письма...');
    
smtp2.account('lib_test''123456'); // Логин и пароль от MAIL.RU ящика
    
smtp2.auth_mode(1); // 1 - значит, что SMTP сервер требует авторизации
    
smtp2.set_pause(500); // Пауза при ожидании ответа от сервера
    
from:='lib_test@mail.ru'// От кого
    
rcpt:='odd-coder@yandex.ru'// Кому
    
subj:='Test msg'// Заголовок письма
    
text:='Hi there! Hello dolly! Kisa kuku!'// Тело письма
    
i:=smtp2.send('smtp.mail.ru'2525fromrcptsubjtext); // Высылаем
    
RepaintDelay(-1);
End

Как видно из исходника, за ходом отправки теперь можно наблюдать из режима форм.

AVIZO 27.07.2009 21:51

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Не работает и с этим вариантом :(
Попробую на другой трубе.

AVIZO 28.07.2009 09:52

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Все работает!!! Огромное спасибо odd-у.

ЗЫ: Ненавижу связь от МТС!

odd 29.07.2009 12:27

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Да просто поиграй с величиной паузы.
Должно прокатить для любого оператора.

GRAY_WOLF 05.08.2009 19:09

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Цитата:

Сообщение от odd (Сообщение 112326)
Да просто поиграй с величиной паузы.
Должно прокатить для любого оператора.

Мегафон Центр и Билайн smtp2.set_pause(1000); // Пауза при ожидании ответа от сервера сервер smtp.bk.ru .

Трава 17.08.2009 19:19

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
У меня симка уральского МТС и Vodafone. На обеих пашет. Odd, те респект. ;)

shdanis 10.10.2010 18:49

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Подскажите как отправить текст написанный на русском языке? приходит не понятно что.

CoMMoN 15.10.2010 09:09

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
у меня так вобще даже не отправляет я все варианты перепробывал. МТС СЕВЕРНЫЙ-КАВКАЗ

Rock2roll 28.08.2011 16:50

Ответ: Lib_smtp2 - Отправка почты с авторизацией
 
Ну как отправить русское письмо???


Часовой пояс GMT +1, время: 14:12.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot