Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
2 / 2 / 2
Регистрация: 15.08.2009
Сообщений: 111

отправка почты

15.08.2009, 22:58. Показов 3504. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
проблема вот в чем
надо зделать так чтоб с одного мыла на другое делфи отсылала письмо)))
адрес мейла получатиля и отправителя я задаю сам)))заранее спс)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.08.2009, 22:58
Ответы с готовыми решениями:

отправка почты
для работы с почтой использую indy pop3, smtp и idmessage. с получением почты проблем нет а вот с отправкой проблемы. вот исходник ...

Отправка почты
Написал программку отправки почты по средством delhi Когда дописывал последние строки кода, я уже радовался что написал первую...

Отправка электронной почты
Есть функция, которая отвечает за отправку сообщений. (Если не отправилась - сохраняет файл) Проблема в том, что отправляется только с...

7
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
15.08.2009, 23:08
http://delphi.about.com/od/ind... d-indy.htm
0
0 / 0 / 1
Регистрация: 09.03.2007
Сообщений: 24
16.08.2009, 04:09
попробуй через инди!!!
только тебе понадобится
логин, пароль, смтп.майл.ру (или какой тебе надо) пр.
Code
1
2
3
4
indy1.host=smtp.mail.ru;
login=name
pass=password
indy1.body.text="text"
а как раньше, просто написал майл и отправил уже не катит. из-за спама придумали всякие авторизации или еще что нибудь. думаю так.
0
2 / 2 / 2
Регистрация: 15.08.2009
Сообщений: 111
16.08.2009, 09:09  [ТС]
Цитата Сообщение от leonw Посмотреть сообщение
попробуй через инди!!!
только тебе понадобится
логин, пароль, смтп.майл.ру (или какой тебе надо) пр.
Code
1
2
3
4
indy1.host=smtp.mail.ru;
login=name
pass=password
indy1.body.text="text"
а как раньше, просто написал майл и отправил уже не катит. из-за спама придумали всякие авторизации или еще что нибудь. думаю так.
спс что откликнулся )) ну я в полном "..." мне надо отправить вроде все правильно написано но выбивается ошибка))) я хочу что б хоть какойто "почтовик" был)))можете код написать самый легкий но рабочий на 100 %)))пожалуйста бо я в этом нуб))
я посмотрю если код правильный а у мя не идет то значит у мя что-то с кампом или делфи)) или может какиета порты не открывает))))
0
 Аватар для Piratcom
21 / 21 / 3
Регистрация: 05.08.2009
Сообщений: 243
18.08.2009, 13:11
Приветствую всех, задался почти такой же целью, только использую не IndiClient, а TCPclient, с помощью него соединился с сервером, определил по тому что проблема в том что не могу понять, как получить ответ от сервера? Допустим посылаю команду HELO smtp.host.ru в ответ должно прийти подтверждение 250 .... откуда его взять? если можно пример...
0
4 / 4 / 1
Регистрация: 17.01.2009
Сообщений: 59
19.08.2009, 22:20
Пример , недавно нашел , работает нормалек.

Delphi
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdMessageClient, IdSMTP, IdMessage, Buttons, winsock;
 
type
    ip_option_information = packed record
 
        Ttl : byte;
        Tos : byte;
        Flags : byte;
        OptionsSize : byte;
        OptionsData : Pointer;
    end;
 
   icmp_echo_reply = packed record
        Address : u_long;
        Status : u_long;
        RTTime : u_long;
        DataSize : u_short;
        Reserved : u_short;
        Data : Pointer;
        Options : ip_option_information;
    end;
 
    PIPINFO = ^ip_option_information;
    PVOID = Pointer;
 
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Label8: TLabel;
    SpeedButton1: TSpeedButton;
    OpenDialog1: TOpenDialog;
    Edit8: TEdit;
    Edit9: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function IcmpCreateFile() : THandle; stdcall; external 'ICMP.DLL' name 'IcmpCreateFile';
function IcmpCloseHandle(IcmpHandle : THandle) : BOOL; stdcall; external 'ICMP.DLL'  name 'IcmpCloseHandle';
function IcmpSendEcho(    IcmpHandle : THandle;
                          DestAddress : u_long;
                          RequestData : PVOID;
                          RequestSize : Word;
                          RequestOptns : PIPINFO;
                          ReplyBuffer : PVOID;
                          ReplySize : DWORD;
                          Timeout : DWORD
                         ) : DWORD; stdcall; external 'ICMP.DLL' name 'IcmpSendEcho';
 
function PingAddress(hostname:PChar):integer;
var
    hIP : THandle;
    pingBuffer : array [0..31] of Char;
    pIpe : ^icmp_echo_reply;
    pHostEn : PHostEnt;
    wVersionRequested : WORD;
    lwsaData : WSAData;
    error : DWORD;
    destAddress : In_Addr;
begin
    hIP := IcmpCreateFile();
 
    GetMem( pIpe,
            sizeof(icmp_echo_reply) + sizeof(pingBuffer));
    pIpe.Data := @pingBuffer;
    pIpe.DataSize := sizeof(pingBuffer);
 
    wVersionRequested := MakeWord(1,1);
    error := WSAStartup(wVersionRequested,lwsaData);
    if (error <> 0) then
    begin
         Result:=-1;
         Exit;
    end;
 
    pHostEn := gethostbyname(hostname);
    error := GetLastError();
    if (error <> 0) then
    begin
         Result:=-1;
         Exit;
    end;
 
     destAddress := PInAddr(pHostEn^.h_addr_list^)^;
    IcmpSendEcho(hIP,
                 destAddress.S_addr,
                 @pingBuffer,
                 sizeof(pingBuffer),
                 Nil,
                 pIpe,
                 sizeof(icmp_echo_reply) + sizeof(pingBuffer),
                 5000);
 
    error := GetLastError();
    if (error <> 0) then
    begin
         Result:=-1;
         Exit;
    end;
    Result:=pIpe.RTTime;
    IcmpCloseHandle(hIP);
    WSACleanup();
    FreeMem(pIpe);
end;
 
procedure SendMail(MailText:TStrings;SendDate,SenderName,SenderAddress,RecAddress,RecServer,MailTheme,Attach,AuthUser,AuthPass:string;IsAttach,IsAuth:boolean);
 var idSMTP1: TIdSMTP; Msg: TIdMessage;
begin
   idSMTP1:=TIdSMTP.Create(Application);
   IdSMTP1.Port:=25;
   IdSMTP1.Host := RecServer;
   IdSMTP1.Connect(2500);
   if IdSMTP1.Connected=True then
   begin
   if IsAuth then
    begin
     IdSMTP1.AuthenticationType:=atLogin;
     IdSMTP1.Username:=AuthUser;
     IdSMTP1.Password:=AuthPass;
    end else
    begin
     IdSMTP1.AuthenticationType:=atNone;
    end;
   Msg:=TIdMessage.Create(Application);
   Msg.Subject:=MailTheme;
   Msg.Recipients.EMailAddresses:=RecAddress;
   Msg.From.Address:=SenderAddress;
   Msg.From.Name:=SenderName;
   Msg.Body.Text:=MailText.Text;
   Msg.Date:=StrToDate(SendDate);
   if IsAttach then TIdAttachment.Create(Msg.MessageParts,Attach);
   idSMTP1.Send(Msg);
   end;
   idSMTP1.Free;
   Msg.Free;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var edst,ifau:boolean;
begin
 if Edit8.text <> '' then ifau:=true else ifau:=false;
 if Edit7.text <> '' then edst:=true else edst:=false;
 if PingAddress(PChar(Edit5.Text))>0 then SendMail(Memo1.Lines,Edit1.text,Edit2.Text,Edit3.Text,Edit4.Text,Edit5.Text,Edit6.Text,Edit7.Text,Edit8.Text,Edit9.text,edst,ifau) else MessageBoxA(handle,'Адрес SMTP-сервера получателя письма может быть некорректен! Письмо не было отправлено.','Внимание',$30);
end;
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then Edit7.Text:=OpenDialog1.FileName;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var DateTime:TDateTime;
begin
DateTime:=Date;
Edit1.Text:=DateToStr(DateTime);
end;
 
end.
Вложения
Тип файла: rar SendingMail.rar (3.2 Кб, 147 просмотров)
0
4 / 4 / 1
Регистрация: 17.01.2009
Сообщений: 59
19.08.2009, 22:24
Цитата Сообщение от Piratcom Посмотреть сообщение
Приветствую всех, задался почти такой же целью, только использую не IndiClient, а TCPclient, с помощью него соединился с сервером, определил по тому что проблема в том что не могу понять, как получить ответ от сервера? Допустим посылаю команду HELO smtp.host.ru в ответ должно прийти подтверждение 250 .... откуда его взять? если можно пример...
Пингануть сервак вот так
Delphi
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
function PingAddress(hostname:PChar):integer;
var
    hIP : THandle;
    pingBuffer : array [0..31] of Char;
    pIpe : ^icmp_echo_reply;
    pHostEn : PHostEnt;
    wVersionRequested : WORD;
    lwsaData : WSAData;
    error : DWORD;
    destAddress : In_Addr;
begin
    hIP := IcmpCreateFile();
 
    GetMem( pIpe,
            sizeof(icmp_echo_reply) + sizeof(pingBuffer));
    pIpe.Data := @pingBuffer;
    pIpe.DataSize := sizeof(pingBuffer);
 
    wVersionRequested := MakeWord(1,1);
    error := WSAStartup(wVersionRequested,lwsaData);
    if (error <> 0) then
    begin
         Result:=-1;
         Exit;
    end;
 
    pHostEn := gethostbyname(hostname);
    error := GetLastError();
    if (error <> 0) then
    begin
         Result:=-1;
         Exit;
    end;
 
     destAddress := PInAddr(pHostEn^.h_addr_list^)^;
    IcmpSendEcho(hIP,
                 destAddress.S_addr,
                 @pingBuffer,
                 sizeof(pingBuffer),
                 Nil,
                 pIpe,
                 sizeof(icmp_echo_reply) + sizeof(pingBuffer),
                 5000);
 
    error := GetLastError();
    if (error <> 0) then
    begin
         Result:=-1;
         Exit;
    end;
    Result:=pIpe.RTTime;
    IcmpCloseHandle(hIP);
    WSACleanup();
    FreeMem(pIpe);
end;
0
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 4
08.11.2009, 13:37
вот отличный видеоурок: http://delphiexpert.ru/view_lesson.php?id=46 только для отправки порт надо поменять с 25 на 587
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2009, 13:37
Помогаю со студенческими работами здесь

TSmtpCli отправка почты
Добрый день всем! Подскажите что делаю не так. Нужно отправить письмо с помощью компонента TSmtpCli делаю так procedure...

Отправка почты SSL
Уже создавались такие темы, но проблема осталась. Как отправить письмо с помощью SLL?

Delphi 2010 отправка почты
Добрый день! Народ, подскажите, как отправить письмо из Delphi 2010 (ХЕ)?? Уже гуглил и по форому лазил - никакого результата( У меня Win...

Отправка почты через Delphi
Сегодня около 3-х часов пытался решить проблему отправки mail-сообщений. Проблема в том, что они тупо не отсылаются. Пришел к выводу, что...

Отправка почты посредствам Delphi 10
Проект запускается, но письмо не отправляется. Вот код. unit Unit1; interface uses Windows, Messages, SysUtils,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru