Mail Gönderme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aydogan46
Üye
Mesajlar: 115
Kayıt: 11 Haz 2003 02:59
Konum: ankara
İletişim:

Mail Gönderme

Mesaj gönderen aydogan46 »

Merhabalar;
Öncelikle herkese kolaylıklar diliyorum. iki haftadır formu ve net alemini didik didik ettim. aşağı yukarı verilen tüm kodlar aynı. hatta about.com dan Zarko ... nin de çalıştığını iddaa ettiği programını indirdim. bir türlü başaramadım. denemediğim port numarası kalmadı. Acaba kodlar doğruda benim maildemi bir sorun var diye onu da inceledim. asp.net tte yazdım kodları aynı mail adresi canavar gibi çalışıyor. Creamail die bir ücretsiz program var onu da kurdum denedim hiç problem yok. Allah rızası için şu kodlara bakar mısınız.

procedure TForm1.Button1Click(Sender: TObject);
begin

IdSMTP1.AuthenticationType:=atlogin;
IdSMTP1.Host:='smtp.gmail.com';
IdSMTP1.Username:='aydogan46@gmail.com';
IdSMTP1.Password:='xxx';
IdSMTP1.Port:=587;

//mesaj
IdMessage1.From.Address:='aydogan46@gmail.com';
IdMessage1.From.Name:='Mehmet AYDOĞAN';
IdMessage1.ReceiptRecipient.Address:='aydogan46@hotmail.com';
IdMessage1.Subject:='konu monu yok';
IdMessage1.Body.Text:='Deneme amaçlı şeyler şte';

IdSMTP1.Connect(1000);
IdSMTP1.Authenticate;
IdSMTP1.Send(IdMessage1);
showmessage('Mesaj Gönderildi');

end;

end.

Sorun: Port no=25 yaptığımda 'EidSocketError Socketerror 10053" hatasını
port no=587 yaptığımda da EidprotocolReplyError with message 5.7.0. Must issue a STARTTLS.

ilginçtir ;

IdSMTP1.AuthenticationType:=atlogin;
IdSMTP1.Host:='smtp.gmail.com';
IdSMTP1.Username:='aydogan46@gmail.com';
IdSMTP1.Password:='xxx';
IdSMTP1.Port:=587;
IdSMTP1.connect;
showmessage('Bağlantı Sağlandı') olarak değiştirdiğim de bağlantı sağlantı mesajını alıyorum.
Şimdiden teşekkür ediyorum.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

gmail SSL protokolünü kullanıyor,

Kod: Tümünü seç

var
  SMTP : TIdSMTP;
  OpenSSL : TIdSSLIOHandlerSocketOpenSSL;
begin
  OpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
  OpenSSL.Host := 'smtp.gmail.com';
  OpenSSL.Port := 465;
  SMTP := TIdSMTP.Create();
  SMTP.IOHandler := OpenSSL;
  ...
  ..
Open Ssl için projenin bulunduğu klasöre libeay32.dll ve ssleay32.dll dll lerini almalısın.

indy son versiyonunda destekliyor zaten yanlış hatırlamıyorsam..
DeveloperToolKit

..::|YeşilMavi|::..
aydogan46
Üye
Mesajlar: 115
Kayıt: 11 Haz 2003 02:59
Konum: ankara
İletişim:

Mesaj gönderen aydogan46 »

delphi7 kullanıyorum bu arada.
ancak TIdSSLIOHandlerSocketOpenSSL; tanımlamasında tanımlanmayan bileşen diyor. dediğiniz dll ler delphi7 de var mı , ben downlload ettim ama işe yaramadı
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

bunlar indy bileşen seti ile geliyor ama hangi versiyon olduğunu hatırlayamıyorum. bir kaç sürümünü indirip denerseniz bulursunuz sanırım.
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
sairalper
Üye
Mesajlar: 23
Kayıt: 15 May 2007 04:54
Konum: Bursa
İletişim:

Mesaj gönderen sairalper »

bu konuya bağlı olarak bir soru sormak istiyorum.
diyelim ki bu şekilde programın içine bir mail hesabının kullanıcı adı ve şifresini gömdük. (şu anda o tip bir W32 program yazıyorum ve programda hesap açıldığında ya da şifre unutulma durumunda programın içinden mail göndertiyorum.)
Dos zamanını hatırlayan var mı bilmem "pcTools" diye birşey vardı, exe'leri com'ları açar, içinde derlenmemiş İngilizce kısımları bulur, Türkçe karşılık yazardık.
O şekilde "kötü niyetli kişiler" o mail adresinin şifresine ulaşabilirler mi?
Alper Şirvan
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
eğer şfireyi şifrelemeden yazarsanız elbetteki ulaşabilirler.
velvki şifreyi şifreleseniz bile kötü niyetli pis insanlar ( :boks: ) gene oşifreyi bulabilirler çünkü şifrelenmiş şifreyi göndermeden önce şifresini çözmeniz gerekir.
çok şifreli bi mesaj oldu :D
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

sairalper yazdı:bu konuya bağlı olarak bir soru sormak istiyorum.
diyelim ki bu şekilde programın içine bir mail hesabının kullanıcı adı ve şifresini gömdük. (şu anda o tip bir W32 program yazıyorum ve programda hesap açıldığında ya da şifre unutulma durumunda programın içinden mail göndertiyorum.)
Dos zamanını hatırlayan var mı bilmem "pcTools" diye birşey vardı, exe'leri com'ları açar, içinde derlenmemiş İngilizce kısımları bulur, Türkçe karşılık yazardık.
O şekilde "kötü niyetli kişiler" o mail adresinin şifresine ulaşabilirler mi?
kırılmayacak şifre yok

ama şifre=abd yerine şifre=#65#66#67 gibi açık olmaya string iyi bir adımdır. genede md5 yada bunun gibi bir yöntemle şifrelemek sağlam olur (ancak md5 gibi yöntemleri şifre elle tekrar elle istenecekse kullabnın)
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Şu mail atma mevzuu delphi alakalı forumlarda birçok kez ve hep aynı soru soruluyor ve ben daha adam akıllı yazılmış bir cevap görmedim.Daha öncede yazdım artık SSH TLS gibi güvenli bağlantı kullanan servislere mail atmak standart indy komutları ile mümkün değil.Lazio bir örnek vermiş gerçi...
Gerekli bileşenler indy10 ile birlikte geliyor...OpenSSL de internetten indirmen gerekiyor.Lazio'nun verdiği örneği denemedim sen bi dene yaparsan çözümünüde paylaş bi zahmet çünkü daha çok sorulacak bu mevzu :D
Kullanıcı avatarı
loribnaczo54
Üye
Mesajlar: 60
Kayıt: 24 Nis 2006 07:42
Konum: Bahçelievler/İst.

Mesaj gönderen loribnaczo54 »

Kod: Tümünü seç

var
 Outlook, MailItem: OLEVariant;
 pCh1: PChar;
 Metin : String;
begin
//************* 1.Gönderme Biçimi . ************************
//  Metin := 'mailto:'+E_to.Text+'?subject='+E_subject.Text+'&body='+E_body.Text+'&file="'+E_filename.Text+'" ';
//  pCh1 := pChar(Metin);
//  ShellExecute(0, 'open', pCh1 , nil, nil, SW_SHOWNORMAL);
//  ChDir(AktifDizin);

//************* 2.Gönderme Biçimi . ************************
// outlook vasıtasıyla ... kullanılabilir. fakat outlook kurulu olması gerkeiyor.
// bir de izin sorunu yaşanıyor...
{
 try
    Outlook := GetActiveOleObject('Outlook.Application');
  except
    Outlook := CreateOleObject('Outlook.Application');
  end;
  MailItem := Outlook.CreateItem(olMailItem);
  MailItem.Recipients.Add(''+E_to.Text+'');
  MailItem.Subject := 'your subject';
  MailItem.Body := 'Welcome to my homepage: http://www.scalabium.com';
  MailItem.Attachments.Add('C:\Windows\Win.ini');
  MailItem.Send;
  Outlook := Unassigned;
}
//************** 3.Gönderme Biçimi *************************
// en ideal i host u kullanıcıyı kendin tanıtıyosun. iş bitiyor...
 
procedure EmailGonder;
Var
  IdSMTP               : TIdSMTP;
  IdMessage            : TIdMessage;
  HTMLpart             : TIdText;
  Attachment           : TIdAttachment;
  GideceklerListesi    : String;
  p, i : integer;
  gidecek: string;
begin
 // Mail Server Ayarları
  IdSMTP                                 := TIdSMTP.Create(Nil);
  IdSMTP.AuthenticationType              := atLogin;
  IdSMTP.Host                            := E_host.Text;
  IdSMTP.Username                        := E_username.Text;
  IdSMTP.Password                        := E_password.Text;
  if E_port.Text = EmptyStr then
  IdSMTP.Port                            := 25
  else
  IdSMTP.Port                            := StrToInt( E_port.Text);

  // Mail Body işlemleri
  IdMessage := TIdMessage.Create( nil );
  IdMessage.From.Name               := E_fromname.Text;
  IdMessage.From.Address            := E_fromadress.Text;


  // Gidecekler Listesi Hazırlanıyor...
  GideceklerListesi := E_to.Text;
  i:=0;
  if Pos(',', GideceklerListesi)>0 then
   begin
      while Pos(',', GideceklerListesi)>0 do
       begin
       // Çoklu Kişiye Gönderim
          p:=pos(',',GideceklerListesi);
                gidecek:=(copy(GideceklerListesi,1,p-1));
                  IdMessage.Recipients.Add;
//                   IdMessage.Recipients[i].Name    := Trim(gidecek);
                   IdMessage.Recipients[i].Address := Trim(gidecek);
                Delete(GideceklerListesi,1,p);
                i := i + 1;
       end;
   end else
      begin
       if E_to.Text <> emptystr then
        begin
         // Sadece Bir Kişiye Gönderim...
            IdMessage.Recipients.Add;
             IdMessage.Recipients[0].Name    := 'İsim';
             IdMessage.Recipients[0].Address := 'Email';
        end;
       end;

  IdMessage.Subject        := E_subject.Text;
  IdMessage.ContentType    := E_contenttype.Text; // genelde://multipart/mixed
  IdMessage.CharSet        := E_charset.Text; // genelde :iso-8859-9

  HTMLpart := TIdText.Create( IdMessage.MessageParts );
  HTMLpart.ContentType     := 'text/plain'; 
  HTMLpart.Body.Text       := '';
  HTMLpart.ContentTransfer := 'quoted-printable';

  HTMLpart := TIdText.Create( IdMessage.MessageParts );
  HTMLpart.ContentType     := 'text/html';
  HTMLpart.ContentTransfer := 'quoted-printable';

  HTMLpart.Body := E_body.Lines;

{
// HTML formatında bir body göndermek için gerekli kodlar
  With HTMLpart.Body do begin
    Clear;
    Add('<html>');
    Add('<head>');
    Add('<title>Test</title>');
    Add('</head>');
    Add('<body>');
    Add('<h1>hede hödö</h1>');
    Add('<h2>Delphi Türkiye</h2>');
    Add('<a href="www.delphiturkiye.com/forum">delphiturkiye forum</a>');
    Add('<center><img src="cid:BizimResim.BMP"></center>');
    Add('<a href="www.delphiturkiye.com/forum">delphiturkiye forum</a>');
    Add('</body>');
    Add('</html>');
  end;
}

  Attachment := TIdAttachment.Create( IdMessage.MessageParts, E_filename.Text );
//  Attachment.ContentType        := 'image/bmp';
  Attachment.ContentDisposition := 'attachment';
  Attachment.ExtraHeaders.Values['content-id'] := E_filename.Text;

  IdSMTP.Connect;
  IdSMTP.Authenticate;
  IdSMTP.Send( IdMessage );
  IdSMTP.Disconnect;

  Attachment.Free;
  IdMessage.Free;
  IdSMTP.Free;
end;



Kullanıcı avatarı
sairalper
Üye
Mesajlar: 23
Kayıt: 15 May 2007 04:54
Konum: Bursa
İletişim:

Mesaj gönderen sairalper »

denemediklerimi mutlaka deniyeceğim.
ama sanırım siteye site.com/yolla.php?konu=xx&metin=yy türü bir şey koymak en kolay yol... ;)

ilgilenen herkese teşekkürler...
Alper Şirvan
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Kullanıcı avatarı
lom
Üye
Mesajlar: 135
Kayıt: 25 Nis 2006 02:37

Mesaj gönderen lom »

loribnaczo54 Hocam 3. mail gönderme işleminde Indy bileşeni kullandınız heralde. Bu proceduru ben butonun click olayına yapıştırdım ancak olmadı. Biraz daha açık bi şekilde yazarsanız çok sevinirim.. Kolay Gelsin
Kullanıcı avatarı
lom
Üye
Mesajlar: 135
Kayıt: 25 Nis 2006 02:37

Mesaj gönderen lom »

Herkese kolay gelsin. Forumdaki kodlardan yaralanarak mail gönderme işlemi yapmaya çalıştım ancak sonuca varamadım :( Delphi 7 kullanıyorum. Yazmış olduğum kod şu şekilde :

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.AuthenticationType:=atlogin;
IdSMTP1.Host:='gonderenmailadresi@hotmail.com';
IdSMTP1.Username:='gonderenmailadresi@hotmailcom';
IdSMTP1.Password:='gonderenmaildifresi';
IdSMTP1.Port:=465;

//mesaj
IdMessage1.From.Address:='aliciadres@hotmail.com';
IdMessage1.From.Name:='İsim';
IdMessage1.ReceiptRecipient.Address:='gonderenadres@hotmail.com';
IdMessage1.Subject:='Konu';
IdMessage1.Body.Text:='Deneme';

IdSMTP1.Connect(1000);
IdSMTP1.Authenticate;
IdSMTP1.Send(IdMessage1);
showmessage('Mesaj Gönderildi');

end;
Yardımcı olursanız sevinirim. Kolay gelsin
askarad
Üye
Mesajlar: 65
Kayıt: 02 Eki 2007 03:47

Mesaj gönderen askarad »

s.a.
modemin ayarlarından 25 nolu portu virtual yonlendirme(nat) yaparsan portu acmıs olursun.zira bazı portlar ayrılmıs portlardır.yonlendirirsen ilgili portu bilgisayarının lan ipsine yonlendir. sanırım bu sekilde amacına ulasırsın.
Cevapla