water Posted May 27, 2011 Author Posted May 27, 2011 The line in red tells you that parameter 4 of the _OL_Open call isn't numeric. How do you call _OL_Open? Can you please post the script line whre you call _OL_OPEN? But if ".. the error value .." is 1 (as shown in the msgbox) then it either means the $sOL_WarningProgram does not exist or the Outlook Object could not be created (that's a bug in the UDF that two errors return the same error code). My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Juvigy Posted May 27, 2011 Posted May 27, 2011 Hi Water, I have an feature request - is it possible to create right click menu actions in outlook? What i have in mind is / what i want to do: 1. Select one mail from the inbox 2. Right click on it and choose "PDF" (action that has been prev. created and calls exe. file The exe file would take the mail and convert it to PDF and save it on the C: drive. How would that be possible ?
Syed23 Posted May 27, 2011 Posted May 27, 2011 (edited) $oOutlook = _OL_Open() $sCurrentUser = "syed.ibrahim@XXX.com" MsgBox(0,"Open Outlook","Error Value : "& @error) $send = _OL_Wrapper_MailSend($oOutlook, $sCurrentUser, "", "", "TestSubject", "Body [b]bold[/b] normal.", "", $olFormatHTML, $olImportanceHigh) The line in red tells you that parameter 4 of the _OL_Open call isn't numeric. How do you call _OL_Open? Can you please post the script line whre you call _OL_OPEN? But if ".. the error value .." is 1 (as shown in the msgbox) then it either means the $sOL_WarningProgram does not exist or the Outlook Object could not be created (that's a bug in the UDF that two errors return the same error code). this is how i call the function Edited May 27, 2011 by Syed23 Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
water Posted May 27, 2011 Author Posted May 27, 2011 Hi Syed, your OutlookEX.au3 seems to be quite old. Could you please download the most current version 0.2.0. In additon you have to change _OL_Wrapper_MailSend to _OL_Wrapper_SendMail. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
water Posted May 27, 2011 Author Posted May 27, 2011 (edited) Hi Juvigy, I don't know right now. Will have to use Dr. Google and see what I can come up with. Edited May 27, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Syed23 Posted May 27, 2011 Posted May 27, 2011 Hi Syed,your OutlookEX.au3 seems to be quite old. Could you please download the most current version 0.2.0.In additon you have to change _OL_Wrapper_MailSend to _OL_Wrapper_SendMail.Sorry to disturb you water! i couldn't find any version 0.2.0... could you pleae provide me the zip file location from where i need to download? also i verified in your signature i get only older one seems... Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
water Posted May 27, 2011 Author Posted May 27, 2011 See my signature below. There is a download link to the OutlookEX UDF. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Syed23 Posted May 27, 2011 Posted May 27, 2011 (edited) See my signature below. There is a download link to the OutlookEX UDF.now the error in expression moved to Endif statement . i have colored the line below.Func _OL_Open($fOL_WarningClick = False, $sOL_WarningProgram = "", $iOL_WinCheckTime = 1000, $iOL_CtrlCheckTime = 1000)If Not IsBool($fOL_WarningClick) Then Return SetError(3, 0, 0)If Not IsInt($iOL_WinCheckTime) Then Return SetError(4, 0, 0)If Not IsInt($iOL_CtrlCheckTime) Then Return SetError(7, 0, 0)If $fOL_WarningClick ThenIf $sOL_WarningProgram = "" Then $sOL_WarningProgram = @ScriptDir & "\_OL_Warnings.exe"If Not FileExists($sOL_WarningProgram) Then Return SetError(1, 0, 0)Run($sOL_WarningProgram & " " & @AutoItPID & " " & $iOL_WinCheckTime & " " & $iOL_CtrlCheckTime, "", @SW_HIDE)If @error <> 0 Then Return SetError(6, @error, 0)<font color="#ff0000">EndIfNote: I copied all the files from OutlookEX.ZIP to my include folder. for your reference i have my code declartion below. Edited May 27, 2011 by Syed23 Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
Syed23 Posted May 27, 2011 Posted May 27, 2011 (edited) expandcollapse popup$oOutlook = _OL_Open() $sCurrentUser = [email="syed.ibrahim@XXX.com"]syed.ibrahim@XXX.com[/email] ;$send = _OL_Wrapper_MailSend($oOutlook, $sCurrentUser, $Cc, "", "GD Core Application Checker tool Feedback", $TextBody&@CRLF&@CRLF&@CRLF&"Mail Sent By = "&$adObj_displayName,$attachemnt, $olFormatHTML) ;MsgBox(0,"Open Outlook","Error Value : "& @error) ;$send = _OL_Wrapper_MailSend($oOutlook, "syed.ibrahim@kcc.com", "raghavendra.cm@kcc.com", "", "GD Core Application Checker tool Feedback", $TextBody &@CRLF&@CRLF&@CRLF& "Mail Sent By = "&$adObj_displayName,$Logpath) ;$send = _OL_Wrapper_MailSend($oOutlook, $sCurrentUser, "", "", "GD Core Application Checker tool Feedback", $TextBody &@CRLF&@CRLF&@CRLF& "Mail Sent By = "&$adObj_displayName, "", $olFormatHTML, $olImportanceHigh) $send =_OL_Wrapper_SendMail($oOutlook,$sCurrentUser, "","", "GD Core Application Checker tool Feedback", $TextBody &@CRLF&@CRLF&@CRLF& "Mail Sent By = "&$adObj_displayName, "", $olFormatHTML, $olImportanceNormal) $outlookprocess = ProcessExists("OUTLOOK.EXE") MsgBox(0,"Sening mail",$send) If @OSVersion = "WIN_7" And @OSArch = "X64" Then If $Excel1 = 1 And $outlookprocess = 0 Then $run = Run("c:\Program Files (x86)\Microsoft Office\Office12\OUTLOOK.EXE") If Not @error Then _FileWriteLog($Logpath,"INFO > Mail Process >"&"Outlook have been launched to the user for sending the mail") Else _FileWriteLog($Logpath,"Error > Mail Process >"&"Unalbe to launch the Outlook to the user for sending the mail "&@error) EndIf ElseIf $Excel3 = 1 And $outlookprocess = 0 Then $run = Run("c:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE") If Not @error Then _FileWriteLog($Logpath,"INFO > Mail Process >"&"Outlook have been launched to the user for sending the mail") Else _FileWriteLog($Logpath,"Error > Mail Process >"&"Unalbe to launch the Outlook to the user for sending the mail "&@error) EndIf EndIf Else If $Excel = 1 And $outlookprocess = 0 Then $run = Run(@ProgramFilesDir&"\Microsoft Office\Office12\OUTLOOK.EXE") If Not @error Then _FileWriteLog($Logpath,"INFO > Mail Process >"&"Outlook have been launched to the user for sending the mail") Else _FileWriteLog($Logpath,"Error > Mail Process >"&"Unalbe to launch the Outlook to the user for sending the mail "&@error) EndIf ElseIf $Excel2 = 1 And $outlookprocess = 0 Then $run = Run(@ProgramFilesDir&"\Microsoft Office\Office14\OUTLOOK.EXE") If Not @error Then _FileWriteLog($Logpath,"INFO > Mail Process >"&"Outlook have been launched to the user for sending the mail") Else _FileWriteLog($Logpath,"Error > Mail Process >"&"Unalbe to launch the Outlook to the user for sending the mail "&@error) EndIf Else _FileWriteLog($Logpath,"WARNING > Mail Process >"&"Unable to Find Office in this machine or the Outlook was already running on this machine") _FileWriteLog($Logpath,"WARNING > Mail Process >"&"Unable to Find Office in this machine or the Outlook was already running on this machine") EndIf EndIf Edited May 27, 2011 by Syed23 Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
water Posted May 27, 2011 Author Posted May 27, 2011 (edited) Hi Syed, this example should work for you. There is no need to start Outlook after _OL_Wrapper_SendMail because Outlook is started with _OL_Open if it isn't already running and closed with _OL_Close when it was opened with _OL_Open. #include $oOutlook = _OL_Open() $sCurrentUser = $oOutlook.GetNameSpace("MAPI" ).CurrentUser.Name $TextBody = "TestBody" $adObj_displayName = "adObj_displayName" $send = _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "GD Core Application Checker tool Feedback", $TextBody & @CRLF & @CRLF & @CRLF & "Mail Sent By = " & $adObj_displayName, "", $olFormatHTML, $olImportanceNormal) If @error <> 0 Then MsgBox(16, "Outlook Test", "Error sending mail: @error = " & @error) _OL_Close($oOutlook) Edited May 27, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Syed23 Posted May 27, 2011 Posted May 27, 2011 Hi Syed, this example should work for you. There is no need to start Outlook after _OL_Wrapper_SendMail because Outlook is started with _OL_Open if it isn't already running and closed with _OL_Close when it was opened with _OL_Open. #include $oOutlook = _OL_Open() $sCurrentUser = $oOutlook.GetNameSpace("MAPI" ).CurrentUser.Name $TextBody = "TestBody" $adObj_displayName = "adObj_displayName" $send = _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "GD Core Application Checker tool Feedback", $TextBody & @CRLF & @CRLF & @CRLF & "Mail Sent By = " & $adObj_displayName, "", $olFormatHTML, $olImportanceNormal) If @error <> 0 Then MsgBox(16, "Outlook Test", "Error sending mail: @error = " & @error) _OL_Close($oOutlook) now the error moved to below marked line ($oOL.Application.Quit). for your reference i have pasted my code as well. Func _OL_Close(ByRef $oOL, $fOL_ForceClose = False) If Not $fOL_AlreadyRunning Or $fOL_ForceClose Then $oOL.Session.Logoff If @error <> 0 Then Return SetError(1, @error, 0) $oOL.Application.Quit Func mail() $oOutlook = _OL_Open() $sCurrentUser = "syed.ibrahim@xxx.com" ;$TextBody = "TestBody" $adObj_displayName = "adObj_displayName" $send = _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "GD Core Application Checker tool Feedback", $TextBody & @CRLF & @CRLF & @CRLF & "Mail Sent By = " & $adObj_displayName, "", $olFormatHTML, $olImportanceNormal) If @error <> 0 Then MsgBox(16, "Oultook Test", "Error sending mail: @error = " & @error) _OL_Close($oOutlook) If $send <> @error Then TrayTip($Title,"Sending Feedback to the Admin. ",30,1) ;Sleep(2500) _FileWriteLog($Logpath,"INFO > Mail Process >"&"Mail has been sent to the Syed Ibrahim - Successfully!") Call("Process") Else TrayTip($Title,"Unable to send an email to the admin",30,2) ;Sleep(2500) _FileWriteLog($Logpath,"INFO > Mail Process >"&"Unable to send an email. Erro occured while sending an email Error value = "&@error) Call("Process") EndIf Call("Process") EndFunc Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
water Posted May 27, 2011 Author Posted May 27, 2011 Could you please try my previous script without further additions? So we can sort out any problems with the OutlookEx UDF. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Syed23 Posted May 27, 2011 Posted May 27, 2011 Could you please try my previous script without further additions?So we can sort out any problems with the OutlookEx UDF.yeah... i gave a try and it works fine! Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
water Posted May 27, 2011 Author Posted May 27, 2011 Fine! That shows that the OutlookEX UDF is OK. So the error has to be with the rest of your script. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Syed23 Posted May 27, 2011 Posted May 27, 2011 (edited) Fine! That shows that the OutlookEX UDF is OK. So the error has to be with the rest of your script. ,, hmm... in my code i removed most of my part... ... but stil the error shows in ENDIF part If ProcessExists("Outlook.exe") > 0 Then $fOL_AlreadyRunning = True Local $oOL = ObjCreate("Outlook.Application") If @error <> 0 Or Not IsObj($oOL) Then Return SetError(1, @error, 0) If ObjEvent("AutoIt.Error") = "" Then $oOL_Error = ObjEvent("AutoIt.Error", "_OL_Error") If @error <> 0 Then Return SetError(2, @error, 0) EndIf only i have below code for mail process Func mail() $oOutlook = _OL_Open() $sCurrentUser = "syed.ibrahim@kcc.com" $send = _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "GD Core Application Checker tool Feedback", $TextBody & @CRLF & @CRLF & @CRLF & "Mail Sent By = " & $adObj_displayName, "", $olFormatHTML, $olImportanceNormal) If @error <> 0 Then _FileWriteLog($Logpath,"INFO > Mail Process >"&"Unable to send an email. Erro occured while sending an email Error value = "&@error) ;_OL_Close($oOutlook) Call("Process") EndFunc Edited May 27, 2011 by Syed23 Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
water Posted May 27, 2011 Author Posted May 27, 2011 (edited) Can't see an error with your posted code. Usually it's a missing IF/ELSEIF or a malformed IF. Use Ctrl+t in SciTE to get a properly aligned source code. Then go to the ENDIF in error and move the cursor up till you get to the corresponding IF. This if has to be in the same column. Edited May 27, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Syed23 Posted May 27, 2011 Posted May 27, 2011 (edited) quote name='water' timestamp='1306511065' post='896160'] Can't see an error with your posted code. Usually it's a missing IF/ELSEIF or a malformed IF. Use Ctrl+t in SciTE to get a properly aligned source code. Then go to the ENDIF in error and move the cursor up till you get to the corresponding IF. This if has to be in the same column. Edited May 27, 2011 by Syed23 Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]
water Posted May 27, 2011 Author Posted May 27, 2011 I can't see a problem with the code. You stated that you use Obfuscator to remove unneeded functions/declarations. Do you check the linenumber in the obfuscated file e.g. <yourscriptname>_obfuscated.au3? I get the impression that the problem needs to be somewhere else because my stripped down example worked just fine. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Juvigy Posted May 30, 2011 Posted May 30, 2011 Hi Water,I have an feature request - is it possible to create right click menu actions in outlook?What i have in mind is / what i want to do:1. Select one mail from the inbox2. Right click on it and choose "PDF" (action that has been prev. created and calls exe. fileThe exe file would take the mail and convert it to PDF and save it on the C: drive.How would that be possible ? I have everything worked out - only one thing remain. How to create a Right click menu in outlook.
water Posted May 30, 2011 Author Posted May 30, 2011 (edited) Hi Juvigy, As I have (not yet) played on that area I used Google and MSDN to look for a solution. But I get the impression that it's not easy. To narrow down the search a bit: Do you want to change the context menu of the Explorer (where you get the list of mails) or the Inspector (where a single mail is displayed)? Another question: Which version of Outlook do you use? 2007, 2010? Edited May 31, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Recommended Posts