Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и сети

Войти
Регистрация
Восстановить пароль
 
 
Алексей_2012
0 / 0 / 1
Регистрация: 26.04.2014
Сообщений: 118
#1

Не отправляется текст из TStringList'a на почту - Delphi

28.07.2014, 17:32. Просмотров 998. Ответов 24
Метки нет (Все метки)

Здравствуйте, у меня такой к Вам вопрос, написал программу, которая по кнопке должна отправить текст из Tstringlist'a на почту, указанную мной в программном коде, все отлично работает до строчки

Код
   IdSMTP1.Connect; // соединение с почтовым сервером
Пинговал яндекс, потерь пакетов нет, все отлично работает, пинговал ip-адрес, указанный в коде, выставлял разные порты (587, 25,...)


все без толку, вот полный код программы.

Код
var
  IdMessage1: TIdMessage;
begin    
  with TStringlist.Create do
  try
    form1.Position := poScreenCenter;
    IdMessage1 := TIdMessage.Create(self);
    Text := 'какой-то '+chr(13)+'текст';
    Add('Файл отправлен в: ' + timetostr(time));
    IdSMTP1.Host := '93.158.134.11'; // адрес почтового сервера
    IdSMTP1.Port := 25; // порт по которому будет осуществляться подключение       //
    IdSMTP1.AuthenticationType := atnone; // тип подключения к серверу - без авторизации
    IdMessage1.Recipients.EMailAddresses := 'ip-man2013@yandex.ru'; // майл получателя письма
    IdMessage1.Subject := 'HeLo!!'; // тема письма
    IdMessage1.Body.Text := Text; // передача данных в компонент IdMessage, для последующей отправки
    IdSMTP1.Connect; // соединение с почтовым сервером
    if idSMTP1.Connected then
      idSMTP1.Send(IdMessage1);
    idSMTP1.Disconnect();

  finally
    Free;
    FreeAndNil(IdMessage1);
  end;
end;
В чем может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2014, 17:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не отправляется текст из TStringList'a на почту (Delphi):

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

Как можно сделать так, чтобы написанный текст пересылался на почту? - Delphi
Помогите пожалуйста зделать так, чтобы писали текс и он пересылался на почту, в delpi как это зделать?

Не отправляется IP на почту - C#
Кусок кода: WebClient wc = new WebClient(); string mr = "login@yandex.ru"; string value =...

Не отправляется html на почту - PHP
скажите кто нибудь, пожалуйста, как отправить html-код на почту? чего только не перепробовал, ничего не работает)) на данный момент...

Не отправляется сообщение на почту - PHP
Почему не отправляется сообщение на почту? код : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...

Не отправляется письмо на почту - Delphi
Перепробовал несколько разных версий кода, гуглил, но все равно у меня не хочет отправлять письмо на почту. Программа просто зависает, или...

24
droider
Delphist, DataBase Dev
4165 / 2249 / 456
Регистрация: 04.10.2012
Сообщений: 8,081
28.07.2014, 17:39 #2
Алексей_2012, попробуйте сопоставить Delphi 2010 отправка почты


Delphi
1
IdSMTP1.AuthenticationType := atnone; // тип подключения к серверу - с авторизацией
Нет. Это как раз без авторизации.
Вот
Delphi
1
IdSMTP1.AuthenticationType  :=atLogin;//это с авторизацией
1
Алексей_2012
0 / 0 / 1
Регистрация: 26.04.2014
Сообщений: 118
28.07.2014, 17:46  [ТС] #3
Мне как раз и нужно в своей программе сделать пункт: "отзыв", то есть пользователь пишет что-то, нажимает отправить, и его отзыв приходит ко мне на мыло. Так что авторизации не требуется, или может быть в программу добавить какое-нибудь левое мыло с левым паролем?

Да, и еще, у меня ОС Windows7 X64 Максимальная, Среда разработки: delphi 7 lite.


З.ы. СТавил до сноса винды DElphi XE5, не очень привычно там оказалось работать, до и занимал более 10ГБ, меня это сильно удивило

Вот исправил код, указанный droider'ом, поставил таймер 15000 в коннекте, и по истечении этих 15 секунд
появился результат работы блока except...end; в общем пишет что время вышло, а если ограничитель не ставить, то программа будет пытаться подключаться к серверу до бесконечности.

Код
procedure TForm1.Button1Click(Sender: TObject);
var idMessage1: TIdMessage;
begin
  idMessage1 := TIdMessage.Create(self);
  idMessage1.Clear;
  with idSmtp1 do
  begin
    Host := 'smtp.yandex.ru';
    Port := 25;
    AuthenticationType := atNone;
  end;
  with idMessage1 do
  begin
    CharSet := 'koi8-r'; //для корректного отображения кириллицы
    Subject := 'Test'; // тема
    Recipients.EMailAddresses := 'ip-man2013@yandex.ru';
    Body.Text := Memo1.Text; // текст сообщения
  end;

  try
    try
      idSmtp1.Connect(15000);
      idSmtp1.Send(idMessage1);
      ShowMessage('Письмо отправлено!');
    except on E: Exception do
      begin
        ShowMessage('Статус отправки: ERROR - ' + E.Message + #10#9 + 'Письмо не отправлено');
      end;
    end;
  finally
    if idSmtp1.Connected
      then idSmtp1.Disconnect;
    FreeAndNil(idMessage1);
  end;
end;
0
Изображения
 
Алексей_2012
0 / 0 / 1
Регистрация: 26.04.2014
Сообщений: 118
28.07.2014, 23:43  [ТС] #4
Ребят, сколько версий кодов с посторонних сайтов я не перепробовал-все безтолку, в чем может быть дело? Может быть компонент какой-нибудь скачать для этого, есть ли такой бесплатный? Есть ли что-то подобное в TMS PAck?
0
Новичок
Модератор
1261 / 809 / 182
Регистрация: 17.07.2012
Сообщений: 4,296
Записей в блоге: 1
Завершенные тесты: 2
28.07.2014, 23:52 #5
Алексей_2012, не знаю, была подобная проблема. Почта не отправлялась. Но, что интересно когда установил Delphi XE2(была Delphi 7) все заработало!
0
droider
Delphist, DataBase Dev
4165 / 2249 / 456
Регистрация: 04.10.2012
Сообщений: 8,081
29.07.2014, 00:57 #6
Цитата Сообщение от Новичок Посмотреть сообщение
когда установил Delphi XE2(была Delphi 7) все заработало
Возможно, у 7-ки косяк в Indy библиотеке. Я этой версией не особо пользуюсь сейчас.
0
northener
пофигист широкого профиля
3153 / 2206 / 469
Регистрация: 15.07.2013
Сообщений: 12,886
29.07.2014, 01:55 #7
Цитата Сообщение от Алексей_2012 Посмотреть сообщение
Мне как раз и нужно в своей программе сделать пункт: "отзыв", то есть пользователь пишет что-то, нажимает отправить, и его отзыв приходит ко мне на мыло. Так что авторизации не требуется
Это как это не требуется? Т.е. smtp-сервер на Яндексе по-вашему не требует авторизации?
0
Алексей_2012
0 / 0 / 1
Регистрация: 26.04.2014
Сообщений: 118
02.08.2014, 03:36  [ТС] #8
ТОгда не понимаю для чего тогда это:

Код
idSmtp1.AuthenticationType := atNone;
Делфи XE2 не столь массивна чем делфи ХЕ5? А на 10-ой версии кто-нибудь тестил прогу?
0
NIKOLAYY
812 / 712 / 159
Регистрация: 22.09.2012
Сообщений: 4,975
02.08.2014, 09:16 #9
Алексей_2012,
У меня свой код всегда собщения на яндекс почту, да и на любую другую отправляло, но у меня чуть другой код, ваш непробовал потому что думаю ваш код вряд ли заработает. И еще я неувидел у вас ни где строки в коде:
Delphi
1
IdSMTP1.Password := 'pass'; // пароль
Я так понимаю вы с какого-то ящика на какой-то должны слать и от вашего ящика пароль должен быть прописан, иначе оно вряд ли и заработает даже! Незнаю я это нетестил конечно но думаю так оно и будет!
0
Алексей_2012
0 / 0 / 1
Регистрация: 26.04.2014
Сообщений: 118
03.08.2014, 20:51  [ТС] #10
А какой пароль там нужно указывать? От почты?
0
droider
Delphist, DataBase Dev
4165 / 2249 / 456
Регистрация: 04.10.2012
Сообщений: 8,081
03.08.2014, 22:15 #11
Алексей_2012, да
1
NIKOLAYY
812 / 712 / 159
Регистрация: 22.09.2012
Сообщений: 4,975
03.08.2014, 23:45 #12
Цитата Сообщение от Алексей_2012 Посмотреть сообщение
А какой пароль там нужно указывать? От почты?
Да обычный пароль, вот рабочий код в сборе:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  IdSMTP1.AuthenticationType := atLogin;
  IdSMTP1.Username := '******@yandex.ru'; //ëîãèГ* Г*Г* ñåðâåðå
  IdSMTP1.Password := '******'; // ГЇГ*ðîëü
  IdSMTP1.Host := 'smtp.yandex.ru'; // URL smtp
 
  IdMessage1.Body.Text := 'Ìîé ГІГҐГЄГ±ГІ ГЇГЁГ±ГјГ¬Г*';
  IdMessage1.From.Text := '******@yandex.ru'; //  Г®ГІГЇГ°Г*âèòåëü
  IdMessage1.Recipients.EMailAddresses := '******@yandex.ru'; // ïîëó÷Г*òåëü
  IdMessage1.Subject := 'Tema'; // ГІГҐГ¬Г*
  TIdAttachment.Create(IdMessage1.MessageParts, 'C:\\test.zip'); //присоединяем файл если надо
  try
    IdSMTP1.Connect();
    IdSMTP1.Send(IdMessage1);
  except
    ShowMessage('Ïèñüìî Г*ГҐ îòïðГ*âëåГ*Г®.');
  end;
  IdSMTP1.Disconnect();
1
Алексей_2012
0 / 0 / 1
Регистрация: 26.04.2014
Сообщений: 118
26.08.2014, 02:45  [ТС] #13
все отлично работает на 587 порту, а вот код

Код
 TIdAttachment.Create(IdMessage1.MessageParts, 'C:\\test.zip'); //присоединяем файл если надо
почему-то не работает, программа даже не компилируется

подключил модуль IdAttachment
выдает такую ошибку:

W1020 Constructing instance of 'TIdAttachment' containing abstract method 'TIdAttachment.OpenLoadStream'
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24015 / 15996 / 4840
Регистрация: 22.10.2011
Сообщений: 28,308
Записей в блоге: 5
26.08.2014, 10:07 #14
Алексей_2012, значит, версия Indy другая. Замени IdAttachment в Uses на IdAttachmentFile, а саму строку - на
Delphi
1
TIdAttachmentFile.Create(IdMessage1.MessageParts, 'C:\test.zip'); // присоединяем файл
1
droider
Delphist, DataBase Dev
4165 / 2249 / 456
Регистрация: 04.10.2012
Сообщений: 8,081
26.08.2014, 10:50 #15
Алексей_2012,
Delphi
1
2
3
uses IdAttachmentFile;
....
TIdAttachmentFile.Create(IdMessage.MessageParts, 'c:\Xxx.xxx');
Добавлено через 44 секунды
Припоздал чуть
1
26.08.2014, 10:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2014, 10:50
Привет! Вот еще темы с ответами:

Не отправляется письмо на почту - PHP Сети
Всем привет! Написал калькулятор расчета стоимости выбранного продукта. скрипт оформил в модуль для joomla 1.5 Теперь нужно отправлять...

Не отправляется письмо на почту - PHP
Здравствуйте. Помогите пожалуйста. Есть форма восстановления пароля по e-mail: <?php include_once('include/config.php');?> <?php...

Не отправляется сообщение на почту - PHP
Здравствуйте! На странице html есть простая форма <form class="contact_form" name="mail" method="post" ectype="text/plain" ...

Заявка, которая отправляется на почту - HTML, CSS
Привет я создаю сайт в html (скажем так учусь и пока получается не плохо но есть небольшая проблема я не могу понять как сделать что бы при...


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

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

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