Форум: "Начинающим";
Текущий архив: 2018.04.08;
Скачать: [xml.tar.bz2];
ВнизEmail component Найти похожие ветки
← →
Abcdef123 (2016-04-11 04:28) [0]Здравствуйте, Мастера!
Уже много лет пользуемся TEmail: MAPI Component. Сейчас похоже, уже он не поддерживается. Исходники есть, но тему отправки и получения емайл не знаю. Возможно, для тех кто в теме, не составит труда подсказать - возможно ли подправить код и если да, то как. Ошибка происходит не на всех компах (у меня, к примеру, работает нормально) , а в зависимости от версии Майкрософт Оутлука, и возможно операционки. ТОчно знаю от пользователей, у кого версия оффиса 2013. По ошибке, на которой вылетает, я поняла, что проискодит в функции Logon. Текст этой фунции прикладываю.function TEmail.Logon: Integer;
const
ProfileKey95 = "Software\Microsoft\Windows Messaging Subsystem\Profiles";
ProfileKeyNT = "Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles";
var
LogonProfile : PChar;
LogonPassword: PChar;
ProfileKey : PChar;
{$IFDEF WIN32}
Reg : TRegistry;
{$ELSE}
{$IFDEF UseGenericThunks}
RegHandle: HKEY;
RegDataSize: longint;
RegResult : longint;
{$ENDIF UseGenericThunks}
{$ENDIF WIN32}
begin
CheckMapi;
Result := SUCCESS_SUCCESS;
{ Check if already logged in. }
if hSession = 0 then
begin
if FUseDefProfile then
begin
{$IFDEF WIN32}
Reg := TRegistry.Create;
try
{ get platform (Win95/NT) dependent profile key }
{ code added by Ulrik Schoth schoth@krohne.mhs.compuserve.com }
if Reg.KeyExists(ProfileKeyNT) then
begin
ProfileKey := ProfileKeyNT;
end
else
begin
ProfileKey := ProfileKey95;
end;
Reg.Rootkey := HKEY_CURRENT_USER;
if Reg.OpenKey(ProfileKey, False) then
begin
try
FProfile := Reg.Readstring("DefaultProfile");
except
FProfile := "";
end;
end;
finally
Reg.Free;
end;
{$ELSE}
{$IFDEF UseGenericThunks}
if Call32NTError = false then
begin
RegResult := RegOpenKeyEx32( HKEY_CURRENT_USER,
ProfileKeyNT,
0,
KEY_QUERY_VALUE,
RegHandle);
{ what, no NT registry entry ?? - then try Win95 entry }
if RegResult <> ERROR_SUCCESS then
RegResult := RegOpenKeyEx32( HKEY_CURRENT_USER,
ProfileKey95,
0,
KEY_QUERY_VALUE,
RegHandle);
RegDataSize := SizeOf(FProfile)-1;
RegResult := RegQueryValueEx32( RegHandle,
"DefaultProfile",
nil,
REG_SZ,
pointer(PChar(@FProfile)+1),
RegDataSize);
FProfile[0] := char(StrLen(PChar(@FProfile)+1));
RegResult := RegCloseKey32(RegHandle);
end;
{$ENDIF UseGenericThunks}
{$ENDIF WIN32}
end;
LogonProfile := nil;
LogonPassword := nil;
try
if Length(FProfile) > 0 then
begin
LogonProfile := StrPCopy(StrAlloc(Length(FProfile)+1), FProfile);
end;
if Length(FPassword) > 0 then
begin
LogonPassword := StrPCopy(StrAlloc(Length(FPassword)+1), FPassword);
end;
DoBeforeLogon;
Result := MapiLogon(0, LogonProfile, LogonPassword, flLogonFlags, 0, @hSession);
if Result <> SUCCESS_SUCCESS then
Result := MapiLogon(0, nil, nil, flLogonFlags or MAPI_Logon_UI, 0, @hSession);
if Result = SUCCESS_SUCCESS then
DoAfterLogon
else
DoMapiError(Result);
finally
StrDispose(LogonProfile);
StrDispose(LogonPassword);
end;
end;
end;
Помогите, пожалуйста.
Заранее спасибо.
Надежда
← →
KilkennyCat © (2016-04-11 06:44) [1]Так и говорит: "ошибка", или есть какие-то подробности?
← →
KilkennyCat © (2016-04-11 06:47) [2]http://stackoverflow.com/questions/24826421/deadlock-when-logging-of-using-simple-mapi-temail-component
Посмотрите, как человек задал вопрос. Заодно, может там и ответ найдется.
← →
Abcdef123 (2016-04-11 08:24) [3]To [1] В наших проектах эта функция просто рассматривает результат logon, и если if (Email1.Logon <> EMAIL_OK) then то просто показывает MessageDlg с нашим текстом, что Мапи лог не состоялся. Именно по этому тексту сообщения, о котором посльзователи сообщили, я и поняла в какой процедуре ошибка.
P.S. EMAIL_OK это константа, объявленная в email.pas
← →
Abcdef123 (2016-04-11 08:31) [4]To [2] Я согласна, что человек хорошо задал вопрос, предоставил всю информацию. Это потому, что ошибка вылетала на его компе. К сожалению я не могу "спровоцировать" ее на моем компе. Пока исхожу только по предоставленной информации пользователей.
За ссылку спасибо, конечно. Хотя должна сказать, что прежде чем задать свой вопрос здесь, я уже искала ответ в интеренете, в том числе видела и эту страничку. Полько вот на этой страничке ответа тоже нет, есть только предположения. А, поскольку, как я изначально упомянула, что в этой теме я не сильна, поэтому обратилась сюда, может кто поможет.
← →
Игорь Шевченко © (2016-04-11 10:17) [5]Так проблема-то в чем ?
← →
Abcdef123 (2016-04-11 10:45) [6]To [5] Ваш вопрос поставил меня в тупик, так как в самом первом посте я описала проблему. Если повторить коротко опять:
Проблема - компонент TEmail не работает с новыми версиями Майкрософт Оутлука.
Почему не работает - не знаю, привела здесь программный код.
Обращение здесь с просьбой помочь "прочитать" код и подправить, чтоб работало со всеми версиями.
Спасибо.
← →
sniknik © (2016-04-11 10:48) [7]> По ошибке, на которой вылетает, я поняла, что проискодит в функции Logon.
а как бы привести эту ошибку сюда? чтобы мы тоже могли это понять...
код это конечно хорошо, но нерабочий кусок (не скопировать чтобы воспроизвести ошибку) это ни о чем.
но даже так, не выполняя, код "кривой"
вот этих ключейProfileKey95 = "Software\Microsoft\Windows Messaging Subsystem\Profiles";
ProfileKeyNT = "Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles";
у меня к примеру нет, первого понятно, но и второго тоже. винда седьмая 64 разрядная, и офис 13-й.
есть что-то похожее -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\ClickToRun\REGISTRY\MACHINE\So ftware\Wow6432Node\Microsoft\Windows Messaging Subsystem
НО!!!
к HKEY_LOCAL_MACHINE под обычным юзером, не админом, нет прав... т.что считай что и его нет.
> есть только предположения.
что возможно, то и дают, ответы в стиле "нажми вот эту кнопку ... и все будет ок" невозможны. вернее очень и очень редки.
← →
Игорь Шевченко © (2016-04-11 18:01) [8]Abcdef123 (11.04.16 10:45) [6]
> Проблема - компонент TEmail не работает с новыми версиями
> Майкрософт Оутлука.
> Почему не работает - не знаю, привела здесь программный
> код.
А что в этом коде не работает ?
← →
DVM © (2016-04-11 18:11) [9]1) В коде нет вывода ошибок. Вот это DoMapiError(Result) ошибку в читабельный вид разве не может преобразовать? Сразу станет все понятно.
2) Советую использовать Extended MAPI
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.04.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.002 c