mapi ile çoklu mail gönderme(Farklı Sorun)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Delhici
Üye
Mesajlar: 176
Kayıt: 20 Eyl 2003 09:04

mapi ile çoklu mail gönderme(Farklı Sorun)

Mesaj gönderen Delhici »

Merhaba
mapi ile çoklu mail göndermek istediğimde gitmiyor. Mailleri for döngusuyle tek tek göndermek zorunda kalıyorum. Mali ile (Outlook üzerinden çoklu mail nasıl gonderebılırıö. Fikriniz var mı?
En son Delhici tarafından 26 Haz 2015 01:11 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: mapi ile çoklu mail gönderme

Mesaj gönderen SimaWB »

MAPI'yi nasıl kullanıyorsunuz?
There's no place like 127.0.0.1
Delhici
Üye
Mesajlar: 176
Kayıt: 20 Eyl 2003 09:04

Re: mapi ile çoklu mail gönderme

Mesaj gönderen Delhici »

Kullandığım fonksiyon aşağıdaki gibi

Kod: Tümünü seç

function SendMAPIEmail(const aTo, aCC, aBCC, aAtts: array of string; const body, subject, SenderName, SenderEmail: string;
  ShowError: Boolean = true): Integer;
var
  SM: TFNMapiSendMail;
  MAPIModule: HModule;
  Msg: MapiMessage;
  lpSender: MapiRecipDesc;
  Recips: array of MapiRecipDesc;
  Att: array of MapiFileDesc;
  p1, p2, p3, LenTo, LenCC, LenBCC, LenAtts: Integer;
  sError: String;
begin
  try
    FillChar(Msg, SizeOf(Msg), 0);
    { get the length of all arrays passed to this function }
    LenTo := length(aTo);
    if Trim(aCC[0]) <> '' then
      LenCC := length(aCC)
    else
      LenCC := 0;
    if Trim(aBCC[0]) <> '' then
      LenBCC := length(aBCC)
    else
      LenBCC := 0;
    if Trim(aAtts[0]) <> '' then
      LenAtts := length(aAtts)
    else
      LenAtts := 0;
    { ... }
    Setlength(Recips, LenTo + LenCC + LenBCC);
    Setlength(Att, LenAtts);
    { to }
    for p1 := 0 to LenTo - 1 do
    begin
      FillChar(Recips[p1], SizeOf(Recips[p1]), 0);
      Recips[p1].ulReserved := 0;
      Recips[p1].ulRecipClass := MAPI_TO;
      { Upgrade }
      Recips[p1].lpszName := pAnsichar(AnsiString(aTo[p1]));
      Recips[p1].lpszAddress := '';
    end;
    { cc }
    for p2 := 0 to LenCC - 1 do
    begin
      FillChar(Recips[p1 + p2], SizeOf(Recips[p1 + p2]), 0);
      Recips[p1 + p2].ulReserved := 0;
      Recips[p1 + p2].ulRecipClass := MAPI_CC;
      { Upgrade }
      Recips[p1 + p2].lpszName := pAnsichar(AnsiString(aCC[p2]));
      Recips[p1 + p2].lpszAddress := '';
    end;
    { bcc }
    for p3 := 0 to LenBCC - 1 do
    begin
      FillChar(Recips[p1 + p2 + p3], SizeOf(Recips[p1 + p2 + p3]), 0);
      Recips[p1 + p2 + p3].ulReserved := 0;
      Recips[p1 + p2 + p3].ulRecipClass := MAPI_BCC;
      { Upgrade }
      Recips[p1 + p2 + p3].lpszName := pAnsichar(AnsiString(aBCC[p3]));
      Recips[p1 + p2 + p3].lpszAddress := '';
    end;
    { atts }
    for p1 := 0 to LenAtts - 1 do
    begin
      FillChar(Att[p1], SizeOf(Att[p1]), 0);
      Att[p1].ulReserved := 0;
      Att[p1].flFlags := 0;
      Att[p1].nPosition := Cardinal($FFFFFFFF);
      { Upgrade }
      Att[p1].lpszPathName := pAnsichar(AnsiString(aAtts[p1]));
      Att[p1].lpszFileName := '';
      Att[p1].lpFileType := nil;
    end;
    { fill the message }
    with Msg do
    begin
      ulReserved := 0;
      if subject <> '' then
        { Upgrade }
        lpszSubject := pAnsichar(AnsiString(subject));
      if body <> '' then
        { Upgrade }
        lpszNoteText := pAnsichar(AnsiString(body));
      if SenderEmail <> '' then
      begin
        lpSender.ulRecipClass := MAPI_ORIG;
        if SenderName = '' then
          lpSender.lpszName := pAnsichar(AnsiString(SenderEmail))
        else
          lpSender.lpszName := pAnsichar(AnsiString(SenderName));
        lpSender.lpszAddress := pAnsichar(AnsiString(SenderEmail));
        lpSender.ulEIDSize := 0;
        lpSender.lpEntryID := nil;
        lpOriginator := @lpSender;
      end
      else
        Msg.lpOriginator := nil;
      Msg.lpszMessageType := nil;
      Msg.lpszDateReceived := nil;
      Msg.lpszConversationID := nil;
      Msg.flFlags := 0;
      Msg.nRecipCount := LenTo + LenCC + LenBCC;
      Msg.lpRecips := @Recips[0];
      Msg.nFileCount := LenAtts;
      Msg.lpFiles := @Att[0];
    end;
    MAPIModule := LoadLibrary(PChar(MAPIDLL));
    if MAPIModule = 0 then
      Result := -1
    else
      try
        @SM := GetProcAddress(MAPIModule, 'MAPISendMail');
        if @SM <> nil then
        begin
          Result := SM(0, application.Handle, Msg, { MAPI_DIALOG or } MAPI_LOGON_UI, 0);
        end
        else
          Result := 1;
      finally
        FreeLibrary(MAPIModule);
      end;
    if Result <> SUCCESS_SUCCESS then
    begin
      case Result of
        MAPI_E_ACCESS_DENIED:
          sError := 'Giriş Reddedildi.';
        MAPI_E_AMBIGUOUS_RECIPIENT:
          sError := 'Ambiguous recipient.';
        MAPI_E_ATTACHMENT_NOT_FOUND:
          sError := 'Ek Bulunamadı.';
        MAPI_E_ATTACHMENT_OPEN_FAILURE:
          sError := 'Ek Açık Durumda.';
        MAPI_E_ATTACHMENT_WRITE_FAILURE:
          sError := 'Ek Yazdırılamadı';
        MAPI_E_BAD_RECIPTYPE:
          sError := 'Alıcı Adresi Geçersiz';
        MAPI_E_DISK_FULL:
          sError := 'Disk Dolu.';
        MAPI_E_FAILURE:
          sError := 'Hata';
        MAPI_E_INSUFFICIENT_MEMORY:
          sError := 'Insufficient Memory.';
        MAPI_E_INVALID_EDITFIELDS:
          sError := 'Geçersiz Alan Düzenlemesi.';
        MAPI_E_INVALID_MESSAGE:
          sError := 'Geçersiz Mesaj.';
        MAPI_E_INVALID_RECIPS:
          sError := 'Geçersiz Alıcı.';
        MAPI_E_INVALID_SESSION:
          sError := 'Geçersiz Oturum.';
        MAPI_E_LOGIN_FAILURE:
          sError := 'Login Hatası.';
        MAPI_E_MESSAGE_IN_USE:
          sError := 'Message in use.';
        MAPI_E_NETWORK_FAILURE:
          sError := 'Ağ Hatası.';
        MAPI_E_NO_MESSAGES:
          sError := 'Mesaj Yok.';
        MAPI_E_NOT_SUPPORTED:
          sError := 'Geçerli Değil.';
        MAPI_E_TEXT_TOO_LARGE:
          sError := 'Text too large.';
        MAPI_E_TOO_MANY_FILES:
          sError := 'Too many files.';
        MAPI_E_TOO_MANY_RECIPIENTS:
          sError := 'Too many recipients.';
        MAPI_E_TOO_MANY_SESSIONS:
          sError := 'Too many sessions.';
        MAPI_E_TYPE_NOT_SUPPORTED:
          sError := 'Geçersiz Dosya Tipi.';
        MAPI_E_UNKNOWN_RECIPIENT:
          sError := 'Geçersiz Alıcı';
        MAPI_E_USER_ABORT:
          sError := 'Kullanıcı İptal etti';
      end;
      if sError <> '' then
      begin
        MessageDlg('Mail Gönderilemedi.  ' + sError, mtInformation, [mbOk], 0);
  Exit;
      end;
    end;
  finally
  end;
end;
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: mapi ile çoklu mail gönderme

Mesaj gönderen SimaWB »

Fonksiyon çoklu gönderimi destekler şekilde yazılmış görünüyor.
Muhtemelen biliyorsunuzdur; gönderilen yerde de MAPInin desteklendiği bir e-posta programı olmalı. Belki gitmeyenlerdeki sorun budur.
There's no place like 127.0.0.1
Delhici
Üye
Mesajlar: 176
Kayıt: 20 Eyl 2003 09:04

Re: mapi ile çoklu mail gönderme (Çözüldü!)

Mesaj gönderen Delhici »

Gitmedi kardeş.... ama sorunu çözdüm.. Aşağıdaki component tam istediğim gibi... Yine de sağol ...

http://delphi.xcjc.net/viewthread.php?tid=49162
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Delhici
Üye
Mesajlar: 176
Kayıt: 20 Eyl 2003 09:04

Re: mapi ile çoklu mail gönderme(BaşkaSorun)

Mesaj gönderen Delhici »

Şimdi de şöyle bir sorun var .

mapi ile listbox içeriğini mail olarak gönderiyrum. Ama listbox u ne kadar biçimlendirirsem biçimlendireyim, maile hiç biçimlendirilmemiş halde gidiyor. Yani düz metin olarak gidiyor. HTML formatında gönderme şansım var mı? Buna nasıl bir çözüm bulabileceğiz? Fikriniz var mı?
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Cevapla