toplu mail gönderimi

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

toplu mail gönderimi

Mesaj gönderen erdogan_ozkaya » 30 Ara 2017 09:26

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
Üye
Mesajlar: 1138
Kayıt: 11 Eyl 2015 11:45

Re: toplu mail gönderimi

Mesaj gönderen ertank » 31 Ara 2017 12:39

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: 799
Kayıt: 03 Eki 2007 01:00

Re: toplu mail gönderimi

Mesaj gönderen erdogan_ozkaya » 31 Ara 2017 02:29

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: 799
Kayıt: 03 Eki 2007 01:00

Re: toplu mail gönderimi

Mesaj gönderen erdogan_ozkaya » 31 Ara 2017 02:51

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