Comment on fait pour envoyer un mail avec delphi?

Résolu
adnaner Messages postés 26 Date d'inscription vendredi 10 septembre 2010 Statut Membre Dernière intervention 5 juillet 2011 - 2 mai 2011 à 16:45
adnaner Messages postés 26 Date d'inscription vendredi 10 septembre 2010 Statut Membre Dernière intervention 5 juillet 2011 - 8 mai 2011 à 15:27
Bonjour,
comment on fait pour envoyer un mail avec delphi?
voici l'un des codes que g tester mais je n'arrive pas a envoyer un email!

unit SendForm;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls,
  IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, IdBaseComponent, IdMessage;

type
  TMainForm = class(TForm)
    Panel2: TPanel;
    Panel1: TPanel;
    Label1: TLabel;
    eName: TEdit;
    Label2: TLabel;
    eSubject: TEdit;
    Label3: TLabel;
    BbtnAddToList: TButton;
    ListAddr: TListBox;
    BtnRemove: TButton;
    Label5: TLabel;
    eFrom: TEdit;
    BtnSendAll: TButton;
    eServer: TEdit;
    MailMessage: TIdMessage;
    Mail: TIdSMTP;
    Label4: TLabel;
    Label6: TLabel;
    eUserName: TEdit;
    Password: TLabel;
    ePassword: TEdit;
    reMessageText: TRichEdit;
    ListLog: TListBox;
    Label7: TLabel;
    Label8: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BtnSendAllClick(Sender: TObject);
    procedure BbtnAddToListClick(Sender: TObject);
    procedure BtnRemoveClick(Sender: TObject);
    procedure MailConnected(Sender: TObject);
    procedure MailDisconnected(Sender: TObject);
    procedure MailStatus(axSender: TObject; const axStatus: TIdStatus;
      const asStatusText: String);
    procedure MailWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    procedure MailWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
  private
    FileName: string;
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.FormCreate(Sender: TObject);
begin
 Application.Title:='Simple Mail';
 
 FileName:=ChangeFileExt(Application.ExeName, '.txt');
 try
  ListAddr.Items.LoadFromFile(FileName);
 except
  ListAddr.Items.SaveToFile(FileName);
 end;
 ListLog.Clear;
 ListLog.Items.Add('Addresses: '+IntToStr(ListAddr.Items.Count));
 
 ListAddr.ItemIndex:=0;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin

 ListAddr.Items.SaveToFile(FileName);
end;

const
  BccInMsg = 30;

procedure TMainForm.BtnSendAllClick(Sender: TObject);
var
 nItem: integer;
 Res: Word;
begin
 if ListAddr.Items.Count=0
 then
  begin
   ShowMessage('Ñïèñîê ïîëó÷àòåëåé ïóñò!');
   Exit;
  end;

 Res:=MessageDlg('Start sending from item '+
   IntToStr(ListAddr.ItemIndex+1)+' ('+
   ListAddr.Items [ListAddr.ItemIndex]+')?'#13+
   'Èëè íå íà÷èíàòü ñ ïåðâîãî àäðåñà.', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
 if Res=mrCancel
 then Exit;
 if Res=mrYes
 then nItem:=ListAddr.ItemIndex  
ItemIndex
 else nItem:=0; 

 Mail.Host:=eServer.Text; 
 Mail.Username:=eUserName.Text;
 if ePassword.Text<>''
 then
  begin
   Mail.Password:=ePassword.Text; 
   Mail.AuthenticationType:=atLogin; 
  end;
 Mail.Connect;

 try
 
  MailMessage.From.Name:=eFrom.Text; 
  MailMessage.Subject:=eSubject.Text; 
  MailMessage.Body.SetText(reMessageText.Lines.GetText);
  MailMessage.Body.Insert(0,'Hello!');
  while nItem<ListAddr.Items.Count do
   begin
    
    Application.ProcessMessages;
    ListAddr.ItemIndex:=nItem;
    MailMessage.Body[0]:='Hello "'+ListAddr.Items[nItem]+'"!';
    MailMessage.Recipients.EMailAddresses:=ListAddr.Items[nItem];
    Mail.Send(MailMessage);
    inc(nItem);
   end;
 finally
  Mail.Disconnect;
 end;
end;

procedure TMainForm.BbtnAddToListClick(Sender: TObject);
begin
 ListAddr.ItemIndex:=ListAddr.Items.Add(eName.Text);
 ListLog.Clear;
 ListLog.Items.Add('Addresses: '+IntToStr(ListAddr.Items.Count)); 
end;

procedure TMainForm.BtnRemoveClick(Sender: TObject);
begin

 eName.Text:=ListAddr.Items[ListAddr.ItemIndex];
 ListAddr.Items.Delete(ListAddr.ItemIndex);
 ListLog.Clear;
 ListLog.Items.Add('Addresses: '+IntToStr(ListAddr.Items.Count));
end;

procedure TMainForm.MailConnected(Sender: TObject);
begin
 ListLog.Items.Add('Connected to host...');
end;

procedure TMainForm.MailDisconnected(Sender: TObject);
begin
 ListLog.Items.Add('Disconnected from host...');
end;

procedure TMainForm.MailStatus(axSender: TObject;
  const axStatus: TIdStatus; const asStatusText: String);
begin
 ListLog.Items.Add(asStatusText);
end;

procedure TMainForm.MailWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
 ListLog.Items.Add('Sending to: '+MailMessage.Recipients.EMailAddresses);
end;

procedure TMainForm.MailWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
 ListLog.Items.Add('Done...');
end;

end.


je pense que le problème et dans le serveur smtp que je ne connais pas ce que ci!
j'ai inscrit ici et on ma donné les information suivant:
------------------------
Serveur SMTP:
in.mailjet.com

Utilisateur (Clé API):
ee57e10a3d6d32985dd322d69e030de1

Mot de passe (Clé secrète):
**************

Port:
25 ou 587 (certains hébergeurs bloquent le port 25)

Utiliser TLS:
oui
-----------------------
mais je n'arrive toujour pas a envoyé un petite e-mail, si quelqu'un peut me dire comment fair!
merci.

_______________________
have fun...

3 réponses

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
3 mai 2011 à 10:34
Salut,

il y a tant de méthodes! On en a discuté plusieurs fois et il suffit de chercher: passant par Outlook, via MAPI ou bien mon préféré Indy mais aussi le plus compliqué.

A+


Composants Cindy pour Delphi
3
Rejoignez-nous