![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Приветствую всех и каждого! 
		
	
		
		
		
		
		
	
		
		
	
	
	Пишу простейшую программу, которая отсылает через MS Outlook 2010 письмо. Делаю это следующим образом: Код: 
	uses
  ComObj;
var
  OutlookApp, SpamNameSpace, MyLetter: OleVariant;
procedure TForm1.SendMail(Subject, Body, RecvAddress: string; Attachs: array of string);
begin
  try
    OutlookApp := GetActiveOleObject('Outlook.Application');
  except
    OutlookApp := CreateOleObject('Outlook.Application');
  end;
  try
    SpamNameSpace := OutlookApp.GetNameSpace('MAPI');
    MyLetter := OutlookApp.CreateItem(0);
    MyLetter.To := RecvAddress;
    MyLetter.Body := Body;
    MyLetter.Subject := Subject;
    MyLetter.Attachments.Add(paramstr(0));
    //MyLetter.DeleteAfterSubmit := True;
    MyLetter.Send;
  finally
    OutlookApp.Quit;
  end;
end;На строке Код: 
	OutlookApp := GetActiveOleObject('Outlook.Application');Код: 
	Exception class EOleSysError with message 'Недопустимая строка с указанием класса, ProgID: "Outlook.Application"'  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 удалить try..except и оставить CreateOleObject('Outlook.Application'); 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Все равно ругается той же ошибкой на той же строке. Такое ощущение, что в новом 2010 оутлуке как-то по другому процесс называется  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 в реестре глянь 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Если не затруднит, подскажи, где конкретно посмотреть? Ветку реестра назвать можешь?  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 ну должна быть HKEY_CLASSES_ROOT\Outlook.Application 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Судя по скрину, все вроде норм  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 наоборот ничего хорошего  
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	![]() попробуй: Код: 
	  try
    OutlookApp := GetActiveOleObject('Outlook.Application.14');
  except
    OutlookApp := CreateOleObject('Outlook.Application.14');
  end; | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Изменил код на: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	  try
    OutlookApp := GetActiveOleObject('Outlook.Application.14');
  except
  end;
  if OutlookApp = Unassigned then
  try
    OutlookApp := CreateOleObject('Outlook.Application.14');
  except
    Exit
  end;
  try
    SpamNameSpace := OutlookApp.GetNameSpace('MAPI');
    MyLetter := OutlookApp.CreateItem(0);
    MyLetter.To := RecvAddress;
    MyLetter.Body := Body;
    MyLetter.Subject := Subject;
    MyLetter.Attachments.Add(paramstr(0));
    //MyLetter.DeleteAfterSubmit := True;
    MyLetter.Send;
  finally
    OutlookApp.Quit;
  end;Получил следующее: Код: 
	Exception class EVariantInvalidOpError with message 'Invalid variant operation'  |