Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.10.2018, 15:38
Gakuro Gakuro вне форума
Прохожий
 
Регистрация: 18.01.2012
Адрес: о. Сахалин
Сообщения: 34
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию сообщения SendTo

Не могу отправить сообщение на почтовый ящик, помогите плииз:
Код:
var sEmail:String;
begin
  sEmail:='mailto:'+sendEmail+'?subject='+sendSubject+'&body='+sendText;
  ShellExecute(Handle,'open',PChar(sEmail),nil,nil,SW_SHOWNORMAL);
end;
sendEmail - имя ящика, строка типа 'zzzzz@mail.ru';
sendSubject - строка темы: 'поздравление';
sendText - текст сообщения (текст короткий);
Админ: 3-дневный бан за несоблюдение правил форума по офрмлению кода

При запуске мне пишут: "Не удалось из-за неправильной установки клиента почты по умолчанию".
Что-то не хватает наверное...

Последний раз редактировалось Admin, 03.10.2018 в 19:57.
Ответить с цитированием
  #2  
Старый 03.10.2018, 21:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,475
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Конкретно, не установленна программа для обработки протокола mailto:
Поставь почтового клиента (mail live вроде теперь называется, раньше был outlook express). Нынче он по умолчанию не идет установленным (с Vista вроде). Ну или пиши свой посылалщик...
Ответить с цитированием
  #3  
Старый 19.10.2018, 06:00
Gakuro Gakuro вне форума
Прохожий
 
Регистрация: 18.01.2012
Адрес: о. Сахалин
Сообщения: 34
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Админ, а в чём неправильность оформления??
Ответить с цитированием
  #4  
Старый 19.10.2018, 06:06
Gakuro Gakuro вне форума
Прохожий
 
Регистрация: 18.01.2012
Адрес: о. Сахалин
Сообщения: 34
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Imikle, мне надо чтобы моя прога отправила на мой мейл письмо с чужого компа. Есть код другой, но там пишут, что ошибка по адресу... Код не привожу, а то снова забанят как в прошлый раз. А у меня проблемы с инетом. Как код подключить? Тут тока ссылки и тэги...
Ответить с цитированием
  #5  
Старый 19.10.2018, 06:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,475
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Код оформляется через теги code (в кв. скобках). Пиши через расширенный режим - там кнопки есть.

По поводу самого вопроса. По сути, твой код правильный. НО! Все дело в том, что для использования такого метода нужно что бы на компе (том, с которого будет отправляться сообшение) стоял и был настроен соответсвующий почтовый клиент. А, начиная с Висты, такой клиент по умолчанию больше не ставится. Если очень так нужно, то можно:
1. На своем сайте сделать скрытую страничку с формой, которую заполнить из программы и субмитнуть. Ну а страничка уже пошлет тебе письмо с сервера.
2. Разобраться как работать с обществеными почтовыми серверами (gmail, mail.ru, etc) и использовать их.
3. Поднять свой smtp сервер где-то и посылать себе письма через него (используя Indy компоненты например - IdSmtpClient)
4. Написать свой smtp-резолвер и класть письмо напрямую в свой почтовый ящик.
Короче, вариантов реализации достаточно много.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Gakuro (19.10.2018)
  #6  
Старый 19.10.2018, 07:40
Gakuro Gakuro вне форума
Прохожий
 
Регистрация: 18.01.2012
Адрес: о. Сахалин
Сообщения: 34
Версия Delphi: Delphi 7
Репутация: 10
Печаль новый код

Imikle, подскажите пожауста, в чём ошибка.
вот код, но при запуске выдаёт ошибку по адресу 00..08 (ящики mail.ru существуют):
// наверно так (тег CODE):
Код:
procedure TForm1.MyWebSendToEmail(sendText:String;{текст сообщения}
                                          sendSubject:String='Hi';   {тема сообщения}
                                          sendEmail:String='xxx@mail.ru'); {имя ящика}
var
  aMsg:TIdMessage;
begin
  // соединяемся с сервером:
  IdSMTP1.Port:=25; {используем 25й порт для соединения с SMTP сервером}
  IdSMTP1.Host:='smtp.mail.ru'; {URL сервера mail.ru}
  IdSMTP1.AuthenticationType:=atNone; {без авторизации на сервере}
  IdSMTP1.Connect; //(5000); {время ожидания ответа от сервера (милисекунды)}

  // для исправления бага на русский шрифт меняем таблицу (UTF8Encode):
  aMsg.CharSet:='UTF-8'; {русифицируем}

  aMsg.Recipients.EMailAddresses:=sendEmail; {имя ящика, входной параметр}
  aMsg.Subject:=UTF8Encode(sendSubject); {тема сообщения, входной параметр}
  aMsg.Body.Text:=UTF8Encode(sendText);  {текст сообщения, входной параметр}
  aMsg.Date:=Now; {дата отправки письма}

  aMsg.From.Address:='xxx1@mail.ru'; {Email отправителя}
  aMsg.From.Name:='User'; {имя отправителя}
  if IdSMTP1.Connected then {если соединились:}
  begin
    IdSMTP1.Send(aMsg); {отправляем письмо}
    IdSMTP1.Disconnect; {разрываем соединение с сервером}
  end;
end;
и письмо никуда не отправляется...
Ответить с цитированием
  #7  
Старый 19.10.2018, 11:27
Gakuro Gakuro вне форума
Прохожий
 
Регистрация: 18.01.2012
Адрес: о. Сахалин
Сообщения: 34
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

P.S к процедуре:
1) если использую var aMsg:TIdMessage, то:
"Access violation at address 0041BC2F in module 'MyProject.exe'.
Read of address 00000008."
2) если использую IdMessage1 с вкладки IndyMisc, то:
"SMTP is available only with SSL or TLS connection enabled."
не знаю чё делать....
Ответить с цитированием
  #8  
Старый 20.10.2018, 00:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,475
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Одна ошибка не отменяет другую.
1. А кто будет за тебя создавать aMsg???
Код:
var
   aMsg : TIdMessage;
begin
...
  aMsg := TIdMessage.Create(Nil);
  Try
...
  Finally
    aMsg.Free;
  End;
end;

2. Тебе сервер говорит, что он принимает подключение только с использованием SSL. Я где-то тут недавно постил пример как использовать SSL с TIdHttp. Я так понимаю, что с TIdSmtp примерно так же. Качаем и кладем рядом с exe пару библиотек, добавляем в код SSLIOHandler (как-то так) и все должно заработать.
Ответить с цитированием
  #9  
Старый 22.10.2018, 05:47
Gakuro Gakuro вне форума
Прохожий
 
Регистрация: 18.01.2012
Адрес: о. Сахалин
Сообщения: 34
Версия Delphi: Delphi 7
Репутация: 10
Печаль SentTo

Imikle, aMsg:=TIdMessage.Create(Nil); да, бывает, спасибо!!!
чё-то твой пост о SSL с TIdHttp где-то закопался. Есть куча постов IdSMTP, IdPOP3, MAPI, но всё-равно ничё не получается, пишет: "С запрошенным действием не связана программа электронной почты. Установите программу электронной почты или, если она уже установлена, создайте связь в панели управления Программы по умолчанию". Мне надо чтоб моя программа с чужого компа отправила письмо на мой майл. При этом я не знаю, что на том компе (майл адреса у юзера тоже может не быть). Я в этом деле ламер, помогите пожалуста!!!
Ответить с цитированием
  #10  
Старый 22.10.2018, 21:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,475
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Вот код для http:
Код:
function TMonitorItem.ReadInternetPage(AUrl : String) : String;
var
  IdHTTP : TIdHTTP;
  Id_HandlerSocket : TIdSSLIOHandlerSocketOpenSSL;
begin
  IdHTTP := TIdHTTP.Create(Nil);
  Id_HandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
  Try
    IdHTTP.Request.BasicAuthentication := False;
    IdHTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';

    Id_HandlerSocket.SSLOptions.Mode := sslmClient;
    Id_HandlerSocket.SSLOptions.Method := sslvSSLv23;
    IdHTTP.IOHandler := Id_HandlerSocket;

    Result := IdHTTP.Get(FUrl);
  Finally
    Id_HandlerSocket.Free;
    IdHTTP.Free;
  End;
end;

вообще, обращения к почтовому клиенту при использование Indy быть не должно...
Ответить с цитированием
  #11  
Старый 22.10.2018, 21:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,475
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Вот тут есть какой-то код для gmail. Но я его не проверял.
https://stackoverflow.com/questions/...indy-using-tls
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter