Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

Нашел в Инете- не хочет работать   Найти похожие ветки 

 
Marat ©   (2007-04-30 13:50) [0]

Начал разбираться с OutLookExpress. Хочу, чтобы можно было послать сформированный файл кому-нибудь на почту. Нашел в Инете:
uses
comobj;

procedure sendmail(subject, body, recvaddress : string; attachs : array of string);
var
mm, ms : variant;
i : integer;
begin
ms := createoleobject("msmapi.mapisession");
try
mm := createoleobject("msmapi.mapimessages");
try
ms.downloadmail := false;
ms.newsession := false;
ms.logonui := true;
ms.signon;
mm.sessionid := ms.sessionid;

mm.compose;

mm.recipindex := 0;
mm.recipaddress := recvaddress;
mm.msgsubject := subject;
mm.msgnotetext := body;

for i := low(attachs) to high(attachs) do
begin
mm.attachmentindex := i;
mm.attachmentpathname := attachs[i];
end;
mm.send(true);
ms.signoff;
finally
varclear(ms);
end;
finally
varclear(mm);
end;
end;

procedure tform1.formcreate(sender : tobject);
begin
sendmail("subject", "body"#13#10"second", "billgates@microsoft.com",
["c:winntexplorer.exe", "c:winntwin.ini"]);
end;

попробовал запустить, а в строке "ms := createoleobject("msmapi.mapisession");" выдается ошибка "Недопустимая строка с указанием класса".
Как с этим бороться?


 
turbouser ©   (2007-04-30 13:58) [1]


uses MAPI;
function SendMail(const From, Dest, Subject, Text, FileName: PAnsiChar; Outlook: boolean): integer;
var
 Message: TMapiMessage;
 Recipient, Sender: TMapiRecipDesc;
 File_Attachment: TMapiFileDesc;

 function MakeMessage: TMapiMessage;
 begin
   FillChar(Sender, SizeOf(Sender), 0);
   Sender.ulRecipClass := MAPI_ORIG;
   Sender.lpszAddress  := From;

   FillChar(Recipient, SizeOf(Recipient), 0);
   Recipient.ulRecipClass := MAPI_TO;
   Recipient.lpszAddress  := Dest;

   FillChar(File_Attachment, SizeOf(File_Attachment), 0);
   File_Attachment.nPosition    := cardinal(-1);
   File_Attachment.lpszPathName := FileName;

   FillChar(Result, SizeOf(Result), 0);
   with Message do
   begin
     lpszSubject  := Subject;
     lpszNoteText := Text;
     lpOriginator := @Sender;
     nRecipCount  := 1;
     lpRecips     := @Recipient;
     nFileCount   := 1;
     lpFiles      := @File_Attachment;
   end;
 end;

var
 SM: TFNMapiSendMail;
 MAPIModule: HModule;
 MAPI_FLAG: cardinal;
begin
 if Outlook then
   MAPI_FLAG := MAPI_DIALOG
 else
   MAPI_FLAG := 0;
 MAPIModule := LoadLibrary(PChar(MAPIDLL));
 if MAPIModule = 0 then
   Result := -1
 else
   try
     @SM := GetProcAddress(MAPIModule, "MAPISendMail");
     if @SM <> nil then
     begin
       MakeMessage;
       Result := SM(0, Application.Handle, Message, MAPI_FLAG, 0);
     end
     else
       Result := 1;
   finally
     FreeLibrary(MAPIModule);
   end;
end;


 
Marat ©   (2007-04-30 14:06) [2]

А можно пример запуска функции SendMail(const From, Dest, Subject, Text, FileName: PAnsiChar; Outlook: boolean): integer;?


 
turbouser ©   (2007-04-30 14:12) [3]

SendMail("от_кого@откуда.ru", "кому@куда.ru","Сабж", "Текст"#13#10"сообщения", "c:\autoexec.bat", True);


 
Marat ©   (2007-04-30 14:26) [4]

А нельзя, чтобы он сам отправил без окна OutLookExpress?


 
turbouser ©   (2007-04-30 15:25) [5]


> Marat ©   (30.04.07 14:26) [4]

Сам же написАл про OE :)
Без него - см. Indy.
Вот например:

uses idSMTP, idMessage, IdCharsets, IdAttachment;
procedure SendMail(Recipients_: string; subj: string = "");
var
 MessageSend: TidMessage;
 SMTP: TidSMTP;
begin
 SMTP := TidSMTP.Create;
 MessageSend := TidMessage.Create(nil);
 try
   SMTP.Host     := "адрес сервера";
   SMTP.Port     := 25;
   SMTP.Username := "имя пользователя";
   SMTP.Password := "пароль";
   SMTP.Connect;
   with MessageSend do
   begin
     charset     := IdCharsetNames[idcswindows_1251];
     contentType := "text/plain";
     From.Text   := "user@server.ru";
     ReplyTo.EMailAddresses := "user@server.ru";
     Recipients.EMailAddresses := Recipients_;
     Subject     := "Сабж";
     Body.Add("Строка 1");
     Body.Add("Строка 2");
     Priority := TIdMessagePriority(mpHighest);
     CCList.EMailAddresses := "user@server.ru";
     BccList.EMailAddresses := "user@server.ru";
     ReceiptRecipient.Text := Recipients_;
   end;
   SMTP.Send(MessageSend);
   try
     SMTP.Disconnect;
   except
   end;
 finally
   SMTP.Free;
   MessageSend.Free;
 end;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.045 c
2-1178012859
Познающий
2007-05-01 13:47
2007.05.20
Вставка рисунка


2-1178187768
Marat
2007-05-03 14:22
2007.05.20
Округлить QRExpr


2-1177605694
Alral
2007-04-26 20:41
2007.05.20
TMEMO и String


1-1174736364
gosha73
2007-03-24 14:39
2007.05.20
Указатель на метод класса


1-1174914421
Inna_Z
2007-03-26 17:07
2007.05.20
Почему может не работать Office 2003 Через OLE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский