Delphi. Кто знает?

stm5999302

Кто знает как из делфи послать e-mail?

stm5999302

И еще, кто-нить знает как работать с Аутлуком в Делфи?

stm5999302

А может хоть кто-то знает компоненту TSendMail и как с ней обходиться?

stm5999302

Вообще никто не знает? ну хоть дайте пинка в нужном направлении
А как послать мессагу др. компу?

Artas

Я как-то в своё время делал коиент-серверное приложение опроса пользователей интернет-клуба (электронная анкета) на Delphi, так я пользовался сокетами. Говорят ещё Indy можно использовать (это я к вопросу о том, как послать мессагу компу)

l1pt0n

ооо ! ты умеешь работать с сетью. замечательно. у тебя есть что-нить для сетей в Дельфи ? а то у меня в какую книжку не копни - одни базы данных..

Artas

У Дельфи есть хелп
А книшка у меня тоже по базам данных
Вроде TWinSock компонент, не помню, давно это было

viktor954

Для 6-ых Дельфи - TNMSMTP
Для 7-ых - TIdSMTP
Смотришь помощь и там ОЧЕНЬ ПОДРОБНЫЕ ПРИМЕРЫ.
А вот тебе "корявый" вариант NetSend-а...


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, shellapi, ComCtrls, Grids;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Button1: TButton;
RichEdit1: TRichEdit;
Label3: TLabel;
Edit3: TEdit;
Button2: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
st,st1:string;
zFileName, zParams, zDir: array[0..255] of Char;
begin
if Edit2.Text='' then exit;
st:='send '+Edit1.Text+' '+'"'+Edit2.Text+'"';
st:=inttostr(shellexecute(Application.Handle,nil,
StrPCopy(zFileName, 'net' StrPCopy(zParams, st
StrPCopy(zDir,'.' sw_hide;
if st<>'0' then begin
st1:=datetimetostr(now)+' ';
if Edit3.Text>'' then st1:=st1+'['+Edit3.Text+'] '
else st1:=st1+'['+Edit1.Text+'] ';
st1:=st1+edit2.Text;
RichEdit1.Lines.Insert(1,st1);
edit2.Text:='';
ShowMessage('Отправлено');
end
else ShowMessage('Ошибка при отправке');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
{Richedit2.Lines.Insert(0,Edit1.Text+' '+Edit3.Text);}
StringGrid1.Cells[0,stringGrid1.RowCount-1]:=Edit1.Text;
StringGrid1.Cells[1,stringGrid1.RowCount-1]:=Edit3.Text;
stringGrid1.RowCount:=stringGrid1.RowCount+1;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
f:textfile;
st:string;
begin
assignfile(f,'Ips.txt');
{$i-}
reset(f);
{$i+}
if ioresult=0 then begin
while not eof(f) do begin
readln(f,st);
if st>'' then begin
StringGrid1.Cells[0,stringGrid1.RowCount-1]:=copy(st,1,pos(' ',st)-1);
delete(st,1,pos(' ',st;
StringGrid1.Cells[1,stringGrid1.RowCount-1]:=st;
stringGrid1.RowCount:=stringGrid1.RowCount+1;
end;
end;
closefile(f);
if StringGrid1.RowCount>1 then begin
Edit1.Text:=StringGrid1.Cells[0,0];
Edit3.Text:=StringGrid1.Cells[1,0];
end;
end;
assignfile(f,'history.txt');
{$i-}
reset(f);
{$i+}
if ioresult=0 then begin
while not eof(f) do begin
readln(f,st);
if st>'' then begin
RichEdit1.Lines.Add(st);
end;
end;
closefile(f);
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
f:textfile;
i:integer;
begin
assignfile(f,'Ips.txt');
{$i-}
rewrite(f);
{$i+}
if ioresult=0 then begin
if StringGrid1.RowCount>1 then
for i:=0 to StringGrid1.RowCount-2 do begin
writeln(f,StringGrid1.Cells[0,i]+' '+StringGrid1.Cells[1,i]);
end;
closefile(f);
end;
assignfile(f,'history.txt');
{$i-}
rewrite(f);
{$i+}
if ioresult=0 then begin
for i:=0 to Richedit1.Lines.Count-1 do begin
writeln(f,Richedit1.Lines[i]);
end;
closefile(f);
end;end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
Edit1.Text:=StringGrid1.Cells[0,ARow];
Edit3.Text:=StringGrid1.Cells[1,ARow];
end;
end.

psm-home

Отправить e-mail можно много какими способами, см., например, сюда. Вот один способ от чела под ником Di_wind с rsdn.ru. Могут быть проблемы с кодировками, но я тестил с The Bat - работало. Этот способ прокатит не со всеми smtp серверами, т. к. компонент Indy, который использован здесь, не знает других способов авторизации, кроме AUTH LOGIN. Будет работать, например, с pop3.rambler.ru (это у них так smtp называется) и smtp.hotbox.ru. Если нужно, можно в письмо вложить файл (файлы). Собиралось под Delphi 6.
unit smtp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, IdMessage, StdCtrls;
type
TMainForm = class(TForm)
SendButton: TButton;
procedure SendButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.SendButtonClick(Sender: TObject);
var
MyMail: TIdSMTP;
NewMessage:TIdMessage;
NewAttach:TIdAttachment;
begin
MyMail := TIdSMTP.Create(MainForm);
//---------------НЕОБХОДИМО ДЛЯ АВТОРИЗАЦИИ SMTP-------------------
try
MyMail.Host := 'pop3.rambler.ru'; //Тут свой адрес сервера исходящей почты
MyMail.Password := '123'; //пароль
MyMail.UserId := 'fizfuck'; //Свой почтовый адрес
MyMail.AuthenticationType := atLogin;
//-----------------------------------------------------------------
MyMail.Port := 25;
MyMail.Connect;
NewMessage:=TidMessage.Create(self);
NewMessage.From.Name:='guess who';
NewMessage.From.Address:='rambler.ru';
NewMessage.IsEncoded:=true;
// Если надо слать вложения, раскомментить это
//NewAttach:=TidAttachment.Create(NewMessage.MessageParts,'e:\attachment.txt');
NewMessage.Body.Add('Message body (Тело сообщения)');
NewMessage.Subject := 'Cool subj (Реальная тема)';
NewMessage.Recipients.EMailAddresses:='rambler.ru'; //Адрес получателя
MyMail.Send(NewMessage);
except
Application.MessageBox('Лажа', 'Случилась');
end;
end;
end.

stm5999302

Всем мпасибо, за оказанное внимание.
Кто-нить знает как прочитать текст из файла *.doc, а то стандартно если читать гавно какое-то получается.
В ворде походу своя кодировка

vijrel7878

юзай automation

sania1974

Я использовал The BAT
Работало
(текст + файлы)


procedure Send(ShortInfo, Adress, Topic: string; AttachFiles: TStringList);
var i : integer;
cmdLine : string;
cmdGood : string;
TxtFile : TStringList;
begin
TxtFile:=TStringList.Create;
TxtFile.Text:=ShortInfo; //saving text
TxtFile.SaveToFile(UserPath+'tmp.txt');
TxtFile.Free;
cmdLine:='/MAIL'+'U='+theBatUser+';'+'P='+theBatPassword+';'; //calling the Bat U=USER, P=PASSWORD
cmdLine:=cmdLine+'TO='+Adress+';'; //adding address
cmdLine:=cmdLine+'S='+Topic+';'; //subject
cmdLine:=cmdLine+'TEXT='+UserPath+'tmp.txt'+';'; //including text
for i:=0 to AttachFiles.Count-1 do //attaching files A=FILE
cmdLine:=cmdLine+'A='+AttachFiles.Strings[i]+';';
cmdLine:=cmdLine+'EDIT'; //open editor
cmdGood:='';
for i:=1 to length(cmdLine) do
if cmdLine[i]=' ' then cmdGood:=cmdGood+'" "' // _ ==> "_"
else if cmdLine[i]='"' then cmdGood:=cmdGood+'''' // " ==> '
else if cmdLine[i]='''' then cmdGood:=cmdGood+'''''' // ' ==> ''
else cmdGood:=cmdGood+cmdLine[i];
ShellExecute(Handle,'open',PChar(theBatExePChar(cmdGoodnil,SW_Show)
end;


правил кое-что прямо здесь
но вроде все верно

stm5999302

Люди, а какой командой мона прочитать с помощью ОЛЕ первую строку из *.doc?
код
word:=createOleObject('word.basic');
word.fileopen('...');
capt:=....
в capt должна оказаться первая строка.
просто хелпов нет, а я в этой теме ЛОХ

viktor954

По командам OLE Automation сервера см. хелп в Офисе по VB.
И более корректный код:


var MsWord: Variant;
begin
try
MsWord := GetActiveOleObject('Word.Application');
except
try
MsWord := CreateOleObject('Word.Application');//либо 'Word.Basic'
MsWord.Visible := false;
except
ShowMessage('Не могу запустить Microsoft Word');
Exit;
end;
end;
end;


а использовать Word в качестве имени переменной - дурной тон. В конце-концов этот тип ещё никто не отменял.
..копать, вроде, нужно в сторону MsWord.ReadLine или MsWord.read

stm5999302

Я тока что попробовал msWord.Read и msWord.Readline, к моему великому сожалению ничего не работает.
Есть msWord.Text и msWord.GetText, но я не знаю параметров
Оставить комментарий
Имя или ник:
Комментарий: