Word Belgesini Mail ile gönderme(attacment olarak değil ama)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Word Belgesini Mail ile gönderme(attacment olarak değil ama)

Mesaj gönderen gul_tanriover »

Arkadaşlar Merhaba

Şirkette kullanılmak üzere indy bileşenlerini(idsmtp,idmessage) kullanarak outlook tarzı bi mail gönderme programı yaptım.Toplu mail gönderebiliyorum müşterilerimize, Attachment özelliğini de kullanabiliyorum.Ama şu bölümde takıldım;

Outlook'ta body kısmına word belgesini kopyalayıp yapıştırabiliyoruz ya, bende bunun gibi body kısmına hazırlanmış standart bir mail şablonunu (tablolar,resimler,renkler,yazı tipi,boyutu vs.)aynı şekilde yerleştirmek ve gönderebilmek istiyorum.

İnanın çok araştırdım ama bulamadım.Bu konuda bilgi sahibi olan varsa lütfen benimle paylaşsın.

Şimdiden çok teşekkürler :)
Herşeye Rağmen....
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2247
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Bir fikir vermesi açısından ben olsaydım ne yapardım diyorum kendime ve aklıma Outlook'un bazı ayarları aklıma geliyor.

Hazırlanacak olan Mailler, HTML mi olmalı yoksa, text mi olmalı gibi bir seçeneği var. Demek ki, Word belgesi de bir nevi HTML olarak kaydediliyordur Mail'e. Haaaa outlook bunu kendi içerde ayırt edebiliyordur, ve içeriğini size Word kullanarak gösteriyordur. Ama muhtemelen Outlook dışında bir mail programıyla açmaya kalkarsanız, size mail'i bir attachment olarak gösterecektir.

Yani aslında bir aldatmaca ile Body'deymiş gibi gösterebilirsiniz.

Açılacak olan Mailin tipine bakıp, haaa bak bu HTML'miş deyip, ekrana bir HTML viewer getirip, mailin body kısmını onun içinde gösterebilirsiniz, bakarsınız ki Text o zaman bir memo edit gibi bir şeyin içinde gösterirsiniz.

Yani maile göre viewer seçersiniz.

Bilmem bir fikir olur mu bu sizin için.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Mesaj gönderen gul_tanriover »

Öncelikle teşekkürler:)Çok güzel ve profesyonel bir fikir bu!!Bununla ilgili çalışma yapacağım
Ama benim programım bu kadar profesyonel değil :oops: ve çok fazla zamanımda kalmadı:(
Acaba bunu yapmanın daha kısa bi yolu yokmudur??indy bileşenleri buna imkan sağlamıyormudur?

Lütfen yardım:(
Herşeye Rağmen....
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Jedi içinde richtext var. birde richtext to html ve html to richtext nesnleri var. word belgesinin içeriğine rich text'e atabilirsiniz. ama tabloları destekliyormu bilmiyorum. daha sonra html kodlarını richtext'den alarak body olarak gönderin.
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

word belgesi olarak değil de html biçimli olarak gönderebilirsiniz.
bunun için

idmessage nesnesinin Charset özelliğini iso-8859-9 olarak
ContentType özelliğini de text/html olarak değiştirin.

idmessage nesnesinin body kısmına ise html kodlarını yazın.
örneğin:

Kod: Tümünü seç

<html>
<head>
<title>Test</title>
</head>
<body>
<h1>hede hödö</h1>
<h2>Delphi Türkiye</h2>
<a href="www.delphiturkiye.com/forum">delphiturkiye forum</a>
</body>
</html>
mailinizi bu şekilde gönderdikten sonra alıcılar biçimli bir şekilde mailleri alacaklardır.
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Mesaj gönderen gul_tanriover »

Merhaba Seroki ,Dediğiniz gibi idmessage charset ve content type ayarlarını uyguladım.Ancak html kodlarını text olarak algılayıp aynen gönderiyor:(
sizin örneğinize benzer bir örnek denedim bende aynen böyle göndermiş;

<html>
<head>
<title>Test</title>
</head>
<body>
<h1>hede hödö</h1>
<h2>Delphi Türkiye</h2>
<a href="www.delphiturkiye.com/forum">delphiturkiye forum</a>
</body>
</html>

neden kaynaklanıyor sizce?
Teşekkürler
Herşeye Rağmen....
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Mesaj gönderen gul_tanriover »

mkysoft yazdı:Jedi içinde richtext var. birde richtext to html ve html to richtext nesnleri var. word belgesinin içeriğine rich text'e atabilirsiniz. ama tabloları destekliyormu bilmiyorum. daha sonra html kodlarını richtext'den alarak body olarak gönderin.

Merhaba Mkysoft,

Bu bileşenleri nereden temin edebilirim?

Teşekkürler
Herşeye Rağmen....
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

posta kutunuzun görüntü ayarlarından kaynaklanıyor olabilir.
posta görünümünüzün html olarak ayarlandığından emin misiniz ?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@SeRoKi'nin söylediklerini farklı uygulamış olabilirsiniz.

- Bu kodları örneğin bir TMemo'ya atarak uygulamayı deneyin. Örnek :

Kod: Tümünü seç

  With Memo1.Lines 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('</body>');
    Add('</html>');
  end;
  IdMessage1.Body.Assign(Memo1.Lines);
  IdMessage1.ContentType := 'text/html';
  IdSMTP1.Connect;
  IdSMTP1.Send( idmessage1 );
  IdSMTP1.Disconnect;
Resim
Resim ....Resim
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Mesaj gönderen gul_tanriover »

Arkadaşlar sağolun tavsiyeleriniz için, tavsiyelerinize uydum ve ikisinide uyguladım ama hala aynı gönderiyor.

Keşke yanlış uygulamış olsam yada posta kutusunun ayarlarından kaynaklanıyor olsa :(

Memo nun içeriğini text olarak gönderiyor bi güzel.Html'e dönüştüreyim falan demiyor sağolsun!!!Yahoo , hotmail ikisinede gönderdim text olarak yolluyor.

Nasıl çözümleyeceğimi bilmiyorum,takıldım kaldım burada.Forumda da araştırmadığım yer kalmadı.Offline dosyayı indirdim onuda taradım ama yok!!

Lütfen Yardımmmmmmmmm :(
Herşeye Rağmen....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bir teyid mekanizması kuralım.

- Bu oluşturulan maili mrmarman@gmail.com adresine yollatır mısınız. Bence mail testi yaptığınız posta hesabının html desteği bulunmuyor. Çünkü şahsen denedim ve doğru çalışıyor.
Resim
Resim ....Resim
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Mesaj gönderen gul_tanriover »

Dediğiniz gibi
mrmarman@gmail.com adresine bir mail gönderdim.
Gelmiştir sanırım.
Nasıl görünüyor?
Herşeye Rağmen....
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

Hotmail'de denenmiştir. Gelen maili Junk klasöründe buldum.
Bileşenin özelliklerini tekrar kontrol edin.
Hotmailin içeriği engelleme gibi bir durumu söz konusu. idMessage bileşenine daha fazla tanıtıcı bilgi ekleyerek Inbox klasörüne gitmesi sağlanabilir.

Test edilen ortam: Windows Live Posta kutusu, Mynet ücretsiz e-posta hesabı posta kutusu.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mail içerisinde ContentID ile resim gönderme (EK olarak değil)

Mesaj gönderen mrmarman »

Merhaba..

- Gönderdiğiniz mailden anlaşıldığı üzere hata su yüzüne çıktı. :!:

- Deneyerek gönderilmiş örneklerin sizde çalışmamasının nedeni örnekleri aynen uygulamayarak, kendi kodlarınızla karştırıp kendinize göre denemeler gerçekleştirmiş, sanki "bizim gönderdiğimiz örnekler sizde çalışmıyor" şeklinde sonuçlar anlaşılmıştır.

Kural : TIdMessage.Body özelliğini; birden fazla bölümden oluşacaksa, bölümlerinden her biri sadece ve sadece ContentType'text/....' olan içerik taşıyanları yani herhangi başka türden ek taşımayan durumlarda kullanılır.

- Siz HTML için 'text/html' demişsinizdir ama resim de eklemişiniz. Bu durumda HTML kaynak kod IdMessage Body olarak değil de Attachment'a eklenmeliydi.

- Aşağıda bir HTML mail gönderme örneği hazırladım. Bunu kendinize göre uygulayın. Örnek içeriğinde HTML içerisinde nasıl CID (ContentID) ekleneceğini de örnekledim. Delphi'deki SQL sorgularındaki parametrik yapının benzeridir.

- Biliyorsunuz resimlerinizi eklediğinizde mesajın sonunda gelir. Bu şekilde mesajın dilediğiniz bir yerinde görüntülenmesi sağlanır. :idea:

- Ek Bilgi, hesabız SSL destekli ise (örneğin GMail hesabı) OpenSSL DLL'lerinin program klasörüne eklenmesi ve bazı ayar değişiklikleri gerekecektir.

- Örnekte her nesne

Kod: Tümünü seç

// Uses'a Eklenecekler : IdMessage, IdSMTP
Var
  IdSMTP               : TIdSMTP;
  IdMessage            : TIdMessage;
  HTMLpart             : TIdText;
  Attachment           : TIdAttachment;
begin
  // Mail Server Ayarları
  IdSMTP                                 := TIdSMTP.Create(Nil);
  IdSMTP.AuthenticationType              := atLogin;
  IdSMTP.Host                            := 'mail.com.tr';
  IdSMTP.Username                        := 'isim';
  IdSMTP.Password                        := 'şifre';
  IdSMTP.Port                            := 25;

  // Mail Body işlemleri
  IdMessage := TIdMessage.Create( nil );
  IdMessage.From.Name               := 'Muharrem ARMAN';
  IdMessage.From.Address            := 'mrmarman@hotmail.com';
  IdMessage.Recipients.Add;
    IdMessage.Recipients[0].Name    := 'DivXTurk';
    IdMessage.Recipients[0].Address := 'divxturk@gmail.com';
  IdMessage.Subject                 := 'eMail Konusu';
  IdMessage.ContentType             := 'multipart/mixed';

  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';
  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, 'EMAIL1.bmp' );
  Attachment.ContentType        := 'image/bmp';
  Attachment.ContentDisposition := 'attachment';
  Attachment.ExtraHeaders.Values['content-id'] := 'BizimResim.BMP';

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

  Attachment.Free;
  IdMessage.Free;
  IdSMTP.Free;
end;
- Artık kendi çözümünüzü üretebilirsiniz. Başarılar...
En son mrmarman tarafından 06 Mar 2016 08:17 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Mesaj gönderen gul_tanriover »

Arkadaşlar çok teşekkürler Yardımlarınızla çözdüm problemimi:)

Herkesin kandili mübarek olsun:)
Herşeye Rağmen....
Cevapla