access veritabanımda adsoyad, mail ve checked alanlarım var.checked alanını dbgridde seçilen satırı true veya false değeri alması için kullandım.programı çalıştırdığım zaman 2 butonum var; ya gridden seçtiğim maillere(checked alanı true olanlar) yada griddeki tüm maillere herhangi bir dosya göndereceğim.(attach olayı)
normal mail göndermeyi biliyorum ama seçili olanlara yada hepsine mail gönderme olayını tam olarak bilmiyorum hele hele dosya göndermeyi hiç bilmiyorum
herkese iyi çalışmalar..
Bilginin temelini sağlam at depremde zarar görmesin
- Zaten döngüyü her seferinde SendMail edecek şekilde değil, String bir değişkene ard arda, noktalıvirgül ayraçlarıyla her email adresini ulayacak şekilde kuracaksın.
- Döngünün sonunda SendMail fonksiyonunda Alıcı olarak bu değişkeni vereceksin.
Var
Sayac : Integer;
Alici : String;
begin
For Sayac := 0 to MailListesi.Count-1 do
begin
Alici := Alici + MailListesi[Sayac] + ';';
end;
If SendMail('gonderen@mail.com', 'gonderen@mail.com', Alici, 'Konu', 'c:\dosya.zip')
then ShowMessage('Göneri başarılı')
else ShowMessage('Göneri başarısız');
end;
bazı smtp sunucular to satırında belirli bir sayıdan fazlasına izin vermiyorlar. Eğer herşey normal ise ve mail göndermede bir problem varsa bu ayrıntıya dikkat edin.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.
procedure Tmail.suiButton3Click(Sender: TObject);
var
i:integer;
mail:string;
begin
sStr:='';
with VAR_QUERY do
begin
First;
for i:=0 to RecordCount-1 do
begin
if VAR_QUERYcheckfield.Asboolean then
begin
sstr:=VAR_QUERYemail.AsString+';'+sstr;
showmessage(sstr);
end;
next;
end;
Refresh;
end;
mail:='aaa';
SendMail(mail,mail,sstr,suiedit4.text,suimemo1.Text,edit1.Text);
showmessage('Mesaj Gönderildi!');
end;
ben bu kodlarla mailimi gönderiyorum ama gridde checked alanı true olanlara göndereceğim ve burda showmesajla o mail alanlarını göster dediğim zaman son mail adresinin sonunada ; koyuyor. bu hata yaratmazmı?
Bilginin temelini sağlam at depremde zarar görmesin
var
mail,
sstr : string;
i : Integer;
begin
sstr := '';
with VAR_QUERY do
begin
First;
for i:=0 to RecordCount-1 do
begin
if VAR_QUERY.FieldByName('checkfield').Asboolean
then sstr:= sstr + VAR_QUERY.FieldByName('email').AsString + ';';
next;
end;
If Length(sstr) > 0 // bu durumda her halukarda en son
// karakter ';' olacağı kesin olduğundan
then System.Delete(sstr, length(sstr), 1);
showmessage(sstr);
Refresh;
end;
mail:='aaa';
If SendMail(mail,mail,sstr,suiedit4.text,suimemo1.Text,edit1.Text)
then showmessage('Mesaj Gönderildi!')
else showmessage('Mesaj Gönderilemedi!');
end;