Delphi ve Indy Kullanarak Ekli E-posta Gönderme

Aşağıda, doğrudan Delphi uygulamasından e-posta mesajları ve ekleri gönderme seçeneğini içeren bir "e-posta göndereni" oluşturma talimatları yer almaktadır. Başlamadan önce alternatifi düşünün ...

Diğer görevlerin yanı sıra bazı veritabanı verilerinde çalışan bir uygulamanız olduğunu varsayalım. Kullanıcıların uygulamanızdan veri aktarması gerekiyor ve verileri bir e-posta yoluyla gönderin (hata raporu gibi). Aşağıda açıklanan yaklaşım olmadan, verileri harici bir dosyaya vermeniz ve daha sonra göndermek için bir e-posta istemcisi kullanmanız gerekir.

Delphi'den E-posta Gönderme

Doğrudan Delphi'den bir e-posta göndermenin birçok yolu vardır, ancak en basit yol ShellExecutehttp API. Bu, bilgisayarda yüklü olan varsayılan e-posta istemcisini kullanarak e-postayı gönderir. Bu yaklaşım kabul edilebilir olsa da, ekleri bu şekilde gönderemezsiniz.

Başka bir teknik, bu kez e-postayı göndermek için Microsoft Outlook ve OLE kullanıyor ile ancak MS Outlook'un kullanılması gerekir.

Yine başka bir seçenek, Delphi'nin Windows Basit Posta API'sı için yerleşik desteğini kullanmaktır. Bu, yalnızca kullanıcının MAPI uyumlu bir e-posta programı yüklü olması durumunda çalışır.

instagram viewer

Burada tartıştığımız teknik Indy (Internet Direct) bileşenleri - Delphi'de yazılmış ve engelleme soketlerine dayanan popüler internet protokollerinden oluşan harika bir internet bileşeni paketi.

TIdSMTP (Indy) Yöntemi

Indy bileşenleriyle (Delphi 6+ ile birlikte gelen) e-posta mesajları göndermek (veya almak) bir forma bir veya iki bileşenini bırakmak, bazı özellikleri ayarlamak ve "bir düğmeyi tıklatmak" kadar kolaydır.

Indy kullanarak Delphi'den ekleri olan bir e-posta göndermek için iki bileşene ihtiyacımız olacak. İlk önce TIdSMTOP bir SMTP sunucusuna bağlanmak ve iletişim kurmak (posta göndermek) için kullanılır. İkincisi, TIdMessage mesajların saklanmasını ve kodlanmasını yönetir.

İleti oluşturulduğunda (ne zaman TIdMessage (verilerle "doldurulur"), e-posta SMTP sunucusuna TIdSMTP.

E-posta Gönderen Kaynak Kodu

Aşağıda açıkladığım basit bir posta gönderici projesi oluşturdum. Kaynak kodun tamamını buradan indirebilirsiniz.

Not: Bu bağlantı, proje için ZIP dosyasına doğrudan bir indirme. Sorunsuz bir şekilde açabilmelisiniz, ancak yapamıyorsanız, 7-Posta arşivini açmak için proje dosyalarını ( Posta göndermek).

Tasarım zamanı ekran görüntüsünde görebileceğiniz gibi, TIdSMTP bileşeni varsa, en azından SMTP posta sunucusunu (ana bilgisayar) belirtmeniz gerekir. Mesajın kendisi gibi normal e-posta bölümlerine doldurulması gerekir. itibaren, için, konu, vb.

Ekli bir e-posta göndermeyi işleyen kod:

prosedür TMailerForm.btnSendMailClick (Gönderen: TObject); başla StatusMemo. Açık; // SMTP'yi kur SMTP.Host: = ledHost. Metin; SMTP.Port: = 25; // posta mesajını ayarla MailMessage. Gönderen. Adres: = ledFrom. Metin; MailMessage. Alıcılar. EMailAddresses: = ledTo. Metin + ',' + ledCC.Text; MailMessage. Subject: = ledSubject. Metin; MailMessage. Vücut. Metin: = Gövde. Metin; Eğer FileExists (ledAttachment. Metin) sonra TIdAttachment. Oluştur (MailMessage. Mesaj Parçaları, led Metin); //posta göndermekDeneyinDeneyin SMTP.Connect (1000); SMTP.Send (MailMessage); dışındaüzerinde E: İstisna var. StatusMemo. Çizgiler. Ekle (0, 'HATA:' + E.Mesaj); son; en sonundaEğer SMTP.Connected sonra SMTP.Disconnect; son; son; (* btnSendMail Tıklama *)

Not: Kaynak kodun içinde, kodun değerlerini yapmak için kullanılan iki ekstra yordam bulacaksınız. evsahibi, itibaren, ve için saklama için bir INI dosyası kullanarak düzenleme kutuları kalıcı.