Monday, September 3, 2007

[Indy 10] GMail and POP3...

[Indy 10] GMail and POP3...:


You have to do a lot correctly though. Here are the steps:

1. Start a new Delphi project (I used Delphi 7 with Indy 10)

2. You have to download the SSL dlls from this site:

http://indy.fulgan.com/SSL/indy_OpenSSL096m.zip

3. Unzip the file and put libeay32.dll and ssleay32.dll in your projects path.

4. Replace the code of Unit1.pas and Unit1.dfm with the code below

5. Change the Username and Password properties on the POP3 component to match those of your GMAIL account.

6. Run and it will show you one message of the GMAIL account

(Doesn't work? Then the settings of you gmail account are probably incorrect. I have set them to "Enable POP for all mail (even mail that's already been downloaded)" "Keep GMail's copy in the inbox")

The hartdest part of getting this to work was getting the utUseImplicitTLS of to POP3 component.

Good luck.

Regards Jacco

<<>>
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdPOP3,
IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL;

type
TForm1 = class(TForm)
POP3: TIdPOP3;
Button1: TButton;
SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses
IdMessage, IdText;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
lMsg: TIdMessage;
liCount: Integer;
liMessages: Integer;
begin
POP3.Connect;
liMessages := POP3.CheckMessages;
Memo1.Lines.Add('CheckMessages: ' + IntToSTr(liMessages));
lMsg := TIdMessage.Create;
try
POP3.Retrieve(1, lMsg);
Memo1.Lines.Text := lMsg.MsgId;
for liCount := 0 to lMsg.MessageParts.Count-1 do
if lMsg.MessageParts[liCount] is TIdText then
Memo1.Lines.AddStrings((lMsg.MessagePart
s[liCount] as TIdText).Body);
finally
lMsg.Free;
end;
end;

end.
<<>>
<<>>
object Form1: TForm1
Left = 192
Top = 114
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 216
Top = 16
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 24
Top = 56
Width = 657
Height = 185
Lines.Strings = (
'Memo1')
TabOrder = 1
end
object POP3: TIdPOP3
IOHandler = SSLHandler
AutoLogin = True
Host = 'pop.gmail.com'
Username = 'YourName@gmail.com'
UseTLS = utUseImplicitTLS
Password = 'YourPassword'
Port = 995
SASLMechanisms = <>
Left = 40
Top = 16
end
object SSLHandler: TIdSSLIOHandlerSocketOpenSSL
Destination = 'pop.gmail.com:995'
Host = 'pop.gmail.com'
MaxLineAction = maException
Port = 995
DefaultPort = 0
SSLOptions.Method = sslvSSLv2
SSLOptions.Mode = sslmUnassigned
SSLOptions.VerifyMode = []
SSLOptions.VerifyDepth = 0
Left = 80
Top = 16
end
end
<<>>

No comments:

如何发掘出更多退休的钱?

如何发掘出更多退休的钱? http://bbs.wenxuecity.com/bbs/tzlc/1328415.html 按照常规的说法,退休的收入必须得有退休前的80%,或者是4% withdrawal rule,而且每年还得要加2-3%对付通胀,这是一个很大...