toplu mail gönderimi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

toplu mail gönderimi

Mesaj gönderen erdogan_ozkaya »

Arkadaşlar, aşağıdaki kod ile mail gönderebiliyorum ama birden fazla ekleyince hata veriyor

nerde yanlış yapıyor olabilirim ?

mmoE_MAIL_ADRESI_TEXT.Text

xxx@gmail.com;
xxx@hotmail.com
vs...

teşekkürler

Kod: Tümünü seç

procedure TANA_SAYFA.btnMAIL_GONDERClick(Sender: TObject);
begin
  if QRYAYARLAR.RecordCount=0
  then ShowMessage('Mail hesabı bulunmadı lütfen ayarları kontrol ediniz.') else
  begin
  inherited;
  Application.ProcessMessages;
  try
    if SMTP.Connected then SMTP.Disconnect;
    SMTP.Host := QRYAYARLAR.Fieldbyname('GIDEN_SUNUCU').Text;
    //SMTP.AuthType := satNone;
    SMTP.AuthType := atDefault;
    SMTP.Username := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
    SMTP.Password := QRYAYARLAR.Fieldbyname('SIFRE').Text;
 
    SMTP.Port := 25;
      if StrToIntDef(QRYAYARLAR.Fieldbyname('GIDEN_SUNUCU_PORT').Text, -1) > 0
      then SMTP.Port :=  StrToInt(QRYAYARLAR.Fieldbyname('GIDEN_SUNUCU_PORT').Text);
 
 
 
    // SSL ayarları
    if QRYAYARLAR.Fieldbyname('GIDEN_PORT_TURU').Text='Yok' then
    begin
      SMTP.UseTLS := utNoTLSSupport;
      SMTP.IOHandler := nil;
      SMTP.ConnectTimeout := 3000;
    end else
 
 
    begin
      LHandler.Destination := SMTP.Host + ':' + IntToStr(SMTP.Port);
      LHandler.Host := SMTP.Host;
      LHandler.Port := SMTP.Port;
      LHandler.DefaultPort := 0;
      LHandler.SSLOptions.Method := sslvTLSv1;
      LHandler.SSLOptions.Mode := sslmUnassigned; // sslmClient;
      LHandler.SSLOptions.VerifyMode := [];
      LHandler.SSLOptions.VerifyDepth := 0;
      SMTP.IOHandler := LHandler;
    end;
 
     if QRYAYARLAR.Fieldbyname('GIDEN_PORT_TURU').Text='SSL'
     then  SMTP.UseTLS := utUseImplicitTLS;
 
     if QRYAYARLAR.Fieldbyname('GIDEN_PORT_TURU').Text='TSL'
     then  SMTP.UseTLS := utUseExplicitTLS;
 
      SMTP.ConnectTimeout := 10000;
    SMTP.Connect;
    EPosta.Clear;
    EPosta.From.Address := QRYAYARLAR.Fieldbyname('E_MAIL').Text;
    EPosta.From.Name :=  QRYAYARLAR.fieldbyname('GONDEREN_AD').Text + ' (Sistem Mesajidir.)';
    EPosta.ReplyTo.EMailAddresses := QRYAYARLAR.Fieldbyname('E_MAIL').Text;
    //EPosta.ReplyTo.Name := EditUSER.Text;
 
    with EPosta.Recipients.Add do
    begin
      if mmoE_MAIL_ADRESI_TEXT.Text > '' then
      begin
        Name := mmoE_MAIL_ADRESI_TEXT.Text;
        Address := mmoE_MAIL_ADRESI_TEXT.Text;
      end else
      begin
        Name := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
        Address := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
      end;
    end;
    EPosta.CCList.EMailAddresses:=QRYAYARLAR.Fieldbyname('BILGI_MAIL').Text;
    EPosta.Subject :=  edtE_MAIL_KONU.Text;
    EPostaIcerikHazirla(Sender);
    SMTP.Send(EPosta);
   finally
    if SMTP.Connected then SMTP.Disconnect;
  end;
 end;
end;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: toplu mail gönderimi

Mesaj gönderen ertank »

Merhaba,

Hangi Indy srümünü kullandığınızı belirtmemişsiniz. Aşağıdaki bağlantı bilgileri en son sürüm için verilmiştir. Ancak şahsen eski sürümlerde de çok farklı olacağını düşünmüyorum.
Indy dökümanları TIdMessage.Recipients ın esasen TIdEMailAddressList sınıfı olduğunu belirtiyor.
http://www.indyproject.org/docsite/html ... ients.html
TIdEMailAddressList sınıfı ile ilgili sayfa ise "virgül" ile ayrılmış string kullanılması gerektiğini belirtiyor.
http://www.indyproject.org/docsite/html ... sList.html

Sizin örneğinizde gördüğüm kadarıyla e-mail adreslerini noktalı virgül ile ayırıyorsunuz ki bu Indy tarafından desteklenmiyor.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: toplu mail gönderimi

Mesaj gönderen erdogan_ozkaya »

Hocam,

Cevabınız için çok teşekkür ederim indy 10 kullanıyorum baktım ama bir türlü çözemedim yardımcı olma imkanınız varmı acaba ?

Teşekkürler.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: toplu mail gönderimi

Mesaj gönderen erdogan_ozkaya »

Hocam Aşağıdaki şekilde gönderebiliyorum teşekkürler.

Kod: Tümünü seç

 if QRYAYARLAR.RecordCount=0
  then ShowMessage('Mail hesabı bulunmadı lütfen ayarları kontrol ediniz.') else
  begin
  inherited;
  Application.ProcessMessages;
  try
    if SMTP.Connected then SMTP.Disconnect;
    SMTP.Host := QRYAYARLAR.Fieldbyname('GIDEN_SUNUCU').Text;
    //SMTP.AuthType := satNone;
    SMTP.AuthType := atDefault;
    SMTP.Username := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
    SMTP.Password := QRYAYARLAR.Fieldbyname('SIFRE').Text;

    SMTP.Port := 25;
      if StrToIntDef(QRYAYARLAR.Fieldbyname('GIDEN_SUNUCU_PORT').Text, -1) > 0
      then SMTP.Port :=  StrToInt(QRYAYARLAR.Fieldbyname('GIDEN_SUNUCU_PORT').Text);



    // SSL ayarları
    if QRYAYARLAR.Fieldbyname('GIDEN_PORT_TURU').Text='Yok' then
    begin
      SMTP.UseTLS := utNoTLSSupport;
      SMTP.IOHandler := nil;
      SMTP.ConnectTimeout := 3000;
    end else


    begin
      LHandler.Destination := SMTP.Host + ':' + IntToStr(SMTP.Port);
      LHandler.Host := SMTP.Host;
      LHandler.Port := SMTP.Port;
      LHandler.DefaultPort := 0;
      LHandler.SSLOptions.Method := sslvTLSv1;
      LHandler.SSLOptions.Mode := sslmUnassigned; // sslmClient;
      LHandler.SSLOptions.VerifyMode := [];
      LHandler.SSLOptions.VerifyDepth := 0;
      SMTP.IOHandler := LHandler;
    end;

     if QRYAYARLAR.Fieldbyname('GIDEN_PORT_TURU').Text='SSL'
     then  SMTP.UseTLS := utUseImplicitTLS;

     if QRYAYARLAR.Fieldbyname('GIDEN_PORT_TURU').Text='TSL'
     then  SMTP.UseTLS := utUseExplicitTLS;

      SMTP.ConnectTimeout := 10000;
    SMTP.Connect;
    EPosta.Clear;
    EPosta.From.Address := QRYAYARLAR.Fieldbyname('E_MAIL').Text;
    EPosta.From.Name :=  QRYAYARLAR.fieldbyname('GONDEREN_AD').Text + ' (Sistem Mesajidir.)';
    EPosta.ReplyTo.EMailAddresses := QRYAYARLAR.Fieldbyname('E_MAIL').Text;
    //EPosta.ReplyTo.Name := EditUSER.Text;
      {
    with EPosta.Recipients.Add do
    begin
      if mmoE_MAIL_ADRESI_TEXT.Text > '' then
      begin
        Name := mmoE_MAIL_ADRESI_TEXT.Text;
        Address := mmoE_MAIL_ADRESI_TEXT.Text;
      end else
      begin
        Name := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
        Address := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
      end;
    end;

    with EPosta.Recipients.Add do
    begin
      if edtE_MAIL_KONU.Text > '' then
      begin
        Name := edtE_MAIL_KONU.Text;
        Address := edtE_MAIL_KONU.Text;
      end else
      begin
        Name := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
        Address := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
      end;
    end; }

         QRYLISTE.First;
         while not QRYLISTE.Eof do
       begin
             with EPosta.Recipients.Add do
          begin
            if QRYLISTE.FieldByName('E_MAIL').Text > '' then
            begin
              Name := QRYLISTE.FieldByName('E_MAIL').Text;
              Address := QRYLISTE.FieldByName('E_MAIL').Text;
            end else
            begin
              Name := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
              Address := QRYAYARLAR.Fieldbyname('KULLANICI_ADI').Text;
            end;
              QRYLISTE.Next;
          end;
        end;

    EPosta.CCList.EMailAddresses:=QRYAYARLAR.Fieldbyname('BILGI_MAIL').Text;
    EPosta.Subject :=  edtE_MAIL_KONU.Text;
    EPostaIcerikHazirla(Sender);
    SMTP.Send(EPosta);
   finally
    if SMTP.Connected then SMTP.Disconnect;
  end;
 end;
Cevapla