Sprawdzanie poczty

0

Można sprawdzić pocztę nie używając INDY?

0

mozna :-) np uzywajac SMTP z Fastnet :))

0

przeciez sa zrodla.. a wykorzystanie jest proste, a jak sobie nie poradzisz to mozesz uzyc komponentow z zakladki FASTNET tam tez fajny komponent jest :p

0

A da się jakoś nie używając komponentów?

0

Może się da, ale będzie to ciężka droga, zapewniam Cię... z komponentem jest o wiele łatwiej. Może poszukaj w tipsach na torry.net ;)

0

16Jak programowo wysłać,otworzyć,lub odebrać wiadomo?ć e-mail?

Wiadomo?ć można odebrać, wysłać [np. bez wiedzy użytkownika], lub otworzyć [i pozostawić użytnikowi możliwo?ć edycji]. Najpierw zajmiemiy się wysyłaniem poczty bez wiedzy użytkownika, bo to jest prostsze.

Wysyłanie niejawne

Aby wysłać wiadomo?ć potrzebujemy komponentu NMSMTP z zakładki FastNet. Najpierw ustawiamy jego wła?ciwo?ci potrzebne do wysłania wiadomo?ci, które możemy ustawić w Object Inspector, ale ja napiszę kod.

NMSMTP1.Host := 'poczta.interia.pl'; //Tu musisz podać swojego hosta
NMSMTP1.UserID := 'MojLogin'; //Tu swój login
{Ok. teraz łšczymy. Tj. nie łšczymy z internetem, a z naszym hostem. Inaczej mówišc logujemy się.}
NMSMTP1.Connect;

Teraz jeste?my już połšczeni. Tworzymy więc wiadomo?ć. Nie musimy jej ustawić wszystkich wła?ciwo?ci, lecz większo?ć jest konieczna.

NMSMTP1.PostMessage.FromAddress := '[email protected]'; {Tak się "przedstawiamy", czyli takš informację o nadawcy otrzyma odbiorca. Można wpisać dowolny adres.}
NMSMTP1.PostMessage.ToAddress.Text := '[email protected]'; {Tu adresy na które wysyłamy - każdy, to osobna linijka! Można odwołać sie od ToAdress.Strings[x].}
NMSMTP1.PostMessage.ToCarbonCopy.Text := '[email protected]'; //To sš kopie. Można pominšć.
NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := '[email protected]'; //To sš kopie. Można pominšć.
NMSMTP1.PostMessage.Body.Text := 'Cze?ć!'+#10+'Jak się masz??'; {Tu tre?ć wiadomo?ci jako tekst. Je?li chcemy, to możemy odwołać się do Body.Strings, wtedy możemy ustawić każdš linijkę osobno.}
NMSMTP1.PostMessage.Attachments.Text := 'c:zalacznik.txt'; //Załšcznik, je?li chcemy. Można się odwołać Attachments.Strings[x]
NMSMTP1.PostMessage.Subject := 'Temat jest poważny!!!!'; //Temat. Chyba nie muszę tłumaczyć.
{I wreszcie wysyłamy mail'a.}
NMSMTP1.SendMail;

I oczywi?cie rozłšczamy - wylogowujemy się.

NMSMTP1.Disconnect;

Odbieranie

Używamy komponentu NMPOP3 z zakładki FastNet. Najpierw, jak zwykle ustawiamy ważne wła?ciwo?ci. Np. robimy przycisk Button1 i w OnClick:

NMPOP31.Host := 'poczta.interia.pl';
NMPOP31.UserID := 'MojLogin';
NMPOP31.Password := 'MojeHaslo'; //Koniecznie!
//Ok. Łšczymy.
NMPOP31.Connect;
//Teraz każemy komponentowi zażšdać list wiadomo?ci.
NMPOP31.List;

Po znalezieniu każdej wiadomo?ci komponent generuje zdarzenie OnList, gdzie mamy dwa parametry: Msg i Size.
Pierwszy, to numer wiadomo?ci, a drugi, to jej rozmiar. Nasz program musi więc np. w tym zdarzeniu zapisać do, powiedzmy, tablicy. Np. deklarujemy tablicę Boolean (ale w sekcji implementation):

implementation
var
Wiadomosc:Array [1..10000] of Boolean;

Teraz w zdarzeniu FormCreate deklarujemy zmiennš integer;

procedure TForm1.FormCreate (Sender:TObject);
var
s:integer;
begin
//Zerujemy tablicę:

For s:= 1 to length(Wiadomosc) do
Wiadomosc[s]:=False;

end;

I zapisujemy w tablicy które numery wiadomo?ci istniejš. Czyli w zdarzeniu OnList naszego komponentu:

procedure TForm1.NMPOP31List(Msg, Size: Integer);
begin
Wiadomosc[Msg]:=True;
end;

I już możemy odbierać wiadomo?ci. W Button1.OnClick:

For s:= 1 to length(Wiadomosc) do
If Wiadomosc[s] then
begin
NMPOP31.GetMailMessage(s);
ZapiszWiadomosc;
end;

Po wywołaniu GetMailMessage komponent zachowuje wiadomo?ć w wła?ciwo?ci MailMessage. Za każdym ?cišgnięciem mail'a musimy więc go zapisać własnš procedurš. Piszemy więc procedurę ZapiszWiadomosc.

procedure TForm1.ZapiszWiadomosc;
begin
{Tu musimy wpisać kod do zapisywania wiadko?ci. Ja tego jednak ni zrobię. Zamiast tego wy?wietlimy komunikat.}
ShowMessage('List od '+NMPOP31.MailMessage.From+' o temacie '+NMPOP31.MailMessage.Subject+' :'+#10+NMPOP31.MailMessage.body.text);
{Możemy też odczytać listę załšczników z StringList'u Attachments.}
end;

Deklarujemy jeszcze nowš procedurę:

type
TForm1 = class(TForm)
{I za deklaracjami komponentów}
procedure ZapiszWiadomosc;

I to już koniec. Kod:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Psock, NMpop3;

type
TForm1 = class(TForm)
NMPOP31: TNMPOP3;
Button1: TButton;
procedure ZapiszWiadomosc;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NMPOP31List(Msg, Size: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
var
Wiadomosc:Array [1..10000] of Boolean;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
s:integer;
begin
NMPOP31.Host := 'poczta.interia.pl';
NMPOP31.UserID := 'MojLogin';
NMPOP31.Password := 'MojeHaslo'; //Koniecznie!
//Ok. Łšczymy.
NMPOP31.Connect;
//Teraz każemy komponentowi zażšdać list wiadomo?ci.
NMPOP31.List;

For s:= 1 to length(Wiadomosc) do
If Wiadomosc[s] then
begin
NMPOP31.GetMailMessage(s);
ZapiszWiadomosc;
end;
NMPOP31.DisConnect;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
s:integer;
begin
//Zerujemy tablicę:

For s:= 1 to length(Wiadomosc) do
Wiadomosc[s]:=False;

end;

procedure TForm1.NMPOP31List(Msg, Size: Integer);
begin
Wiadomosc[Msg]:=True;
end;

procedure TForm1.ZapiszWiadomosc;
begin
{Tu musimy wpisać kod do zapisywania wiadko?ci. Ja tego jednak ni zrobię. Zamiast tego wy?wietlimy komunikat.}
ShowMessage('List od '+NMPOP31.MailMessage.From+' o temacie '+NMPOP31.MailMessage.Subject+' :'+#10+NMPOP31.MailMessage.body.text);
{Możemy też odczytać listę załšczników z StringList'u Attachments.}
end;

end.

Otwieranie wiadomo?ci

uses Mapi;

var
Wiadomosc: TMapiMessage;
Blad: Cardinal;
begin
with Wiadomosc do
begin
ulReserved := 0;
lpszSubject := 'Temat';
lpszNoteText := 'Tekst_wiadomo?ci_jako_PChar';
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 0;
lpRecips := nil;
nFileCount := 0;
lpFiles := nil;
end;

Blad := MapiSendMail(0, 0, Wiadomosc, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
if Blad 0 then
MessageDlg('Błšd!', mtError, [mbOK], 0);
end;

Lub, dużo pro?ciej:

ShellExecute(GetDesktopWindow,'open',mailto:[email protected],nil,nil,sw_normal);

Ten tekst jest z http://www.republika.pl/portal_delphi/FAQ.htm

0

Dzięki!

0

A jak odebrać za pomocą idpop3

1 użytkowników online, w tym zalogowanych: 0, gości: 1