[Gambas-user] Receiving an email

Rolf-Werner Eilert eilert-sprachen at ...221...
Fri Jul 19 17:44:45 CEST 2013


Thanks for all the good tipps, will keep your advice in mind!

Rolf


Am 16.07.2013 01:06, schrieb Randall Morgan:
> Yes, either passing your credentials , host and port info via the command
> line or storing it in a settings file would be best. What I sent should NOT
> be used as is!!! It has many issues I am sure. It was just a quick example
> to get you started.
>
>
> On Mon, Jul 15, 2013 at 3:57 PM, Sebastian Kulesz <sebikul at ...626...> wrote:
>
>> You could use a cron tab to run the script Randall just sent. There is a
>> POP3Client example you can open with the gambas IDE to know how it works.
>> Just execute the app every x minutes and you are done!
>>
>> Remember not to hardcode your username and password. You will regret later
>>
>>
>> On Mon, Jul 15, 2013 at 7:37 PM, Randall Morgan <rmorgan62 at ...626...>
>> wrote:
>>
>>> Here's a really quick and dirty sample of using the gd.net.pop3 mail
>> client
>>> using the command line project type:
>>>
>>> ' Gambas module file
>>>
>>> Public Sub Main()
>>>   Dim hConn As New Pop3Client
>>>   Dim sMailIds As String[]
>>>   Dim sMailId As String
>>>   Dim Stats As Integer[]
>>>   Dim iCount As Integer
>>>   Dim iSize As Integer
>>>   Dim sMessage As String
>>>
>>>
>>>   'Set mail server connection parameters
>>>   With hConn
>>>     .Host =  '"<your mail server host name>"
>>>     .Port = 110 '<your mail server port 110 is common for non ssl. 995 for
>>> ssl. >
>>>     .User = '"<your mail account username>"
>>>     .Password = '"<your mail account password>" 'May want to store in, and
>>> retrieve this from an encrypted file
>>>   End With
>>>
>>>   Try hConn.Open
>>>
>>>   If Error Then
>>>     Print "Mail Error: "; Error.Text; "\nat "; Error.Where 'May want to
>> log
>>> this....
>>>   Else
>>>     If hConn.Status = -16 Then
>>>       Print "Cannot Authenticate Mail Account."
>>>       Stop
>>>     Else If hConn.Status = 7 Then
>>>       Print "Connected to mail server...."
>>>       Print hConn.Welcome
>>>     Endif
>>>   Endif
>>>
>>>
>>> Stats = hConn.Stat()
>>>
>>> Print "There are "; Stats[0]; " Messages in your inbox."
>>> Print "You inbox contains "; Stats[1]; " bytes of data."
>>>
>>>   ' Show all mail ids
>>>   sMailIds = hConn.List()
>>>
>>>   For Each sMailId In sMailIds
>>>     Print sMailId
>>>   Next
>>>
>>>   ' Get each mail and display
>>>   For Each sMailId In sMailIds
>>>     sMessage = hConn.Exec("RETR " & sMailId)
>>>     Print "Message: "; sMailId; "\n"
>>>     Print "----------------------------------------------------"
>>>     Print sMessage; "\n\n"
>>>   Next
>>>
>>>   Print "Closing Connection."
>>>   hConn.Close
>>>
>>> End
>>>
>>>
>>>
>>> You may also find these links helpful:
>>>
>>>
>>>
>> http://www.arclab.com/products/amlc/list-of-smtp-and-pop3-servers-mailserver-list.html
>>>
>>> http://www.electrictoolbox.com/article/networking/pop3-commands/
>>>
>>>
>>> On Mon, Jul 15, 2013 at 2:12 PM, Tobias Boege <taboege at ...626...> wrote:
>>>
>>>> On Mon, 15 Jul 2013, Rolf-Werner Eilert wrote:
>>>>> Thanks for your advice, Randall.
>>>>>
>>>>> Am 15.07.2013 17:16, schrieb Randall Morgan:
>>>>>> Is your email pop3, IMAP, MAPI, or webmail? The way you approach
>> this
>>>>>> depends on the target system.
>>>>>
>>>>> It is pop3 and it is my own vserver for my firm's website.
>>>>>
>>>>>>
>>>>>> IMHO pop3 would be the easiest. There you would only need to access
>>>> your
>>>>>> mail account to download the emails for processing. Gambas has PDF
>>>>>
>>>>> Yes, that would be the precise question. My idea was to use the
>> contact
>>>>> form plugin from the website, making another contact form which sends
>>>>> the results to another email address (e. g. application at ...1107... instead
>> of
>>>>> info at ...1107...) and read the emails from that address.
>>>>>
>>>>> So it all boils down to: how can I read the emails - say once a
>> minute
>>> -
>>>>> and place them somewhere where a script of mine - say Gambas - has
>>>>> access and reads them. And how to read them.
>>>>>
>>>>> I thought of leaving everything on the remote server, but it might as
>>>>> well be read from our local server in my firm and processed there.
>> The
>>>>> latter might be the better way, as it is done so for the ordinary
>>>>> contact forms now (they are waiting for my email client to fetch them
>>>>> from the remote server via pop3, so I can fetch them even now when
>> I'm
>>>>> in holidays, with my laptop). I'd just need a script to do with the
>>>>> other ones in regular intervals.
>>>>>
>>>>>> generation capabilities so that is not an issue. Another way to
>>> handle
>>>> this
>>>>>> would be to setup a GAMABS SMTP service and have the emails
>> forwarded
>>>> to
>>>>>> that service. Then the app could be written to process any email
>> that
>>>>>> arrived in the inbox.
>>>>>
>>>>> Yes, I saw there's an smtp library for Gambas, but I thought it might
>>> be
>>>>> easier the other way round.
>>>>>
>>>>>>
>>>>>> As for an easy way.... Well, easy is a qualitative term and so the
>>>> ease of
>>>>>> development would depend on the programmer's experience and
>>> abilities.
>>>> If
>>>>>> you're using webmail and the front end is something like Squirrel
>>> Mail,
>>>>>> then you have a nice table arrangement that can be easily parsed
>> with
>>>>>> GAMBAS. But if your mail account is something like Yahoo or Google
>> I
>>>> think
>>>>>> a web parsing framework such as those used with Java or Python
>> would
>>>> ease
>>>>>> development.
>>>>>
>>>>> Neither nor, there's qmail on the server. That's it.
>>>>>
>>>>>>
>>>>>> A lot of my data collection tasks involve writing code in different
>>>>>> languages.
>>>>>
>>>>> I wouldn't mind calling some other script from the Gambas one or
>>>> vice-versa.
>>>>>
>>>>>
>>>>>> For example, One of my apps is a simple bash script that takes
>>>>>> forms submitted as pdfs, and processes them using python and then
>>>> stores
>>>>>> the results in a MySQL DB which has some stored procedures for
>> final
>>>>>> processing. Then a cron script runs one every 5 minutes to get any
>>> new
>>>> rows
>>>>>> from the DB and place them in a queue to be reviewed by staff. The
>>>> staff
>>>>>> app then calls a php script that connects to a asterisk system if
>> the
>>>> staff
>>>>>> needs to contact the client, and dials the clients number. Sadly,
>> the
>>>> staff
>>>>>> review portion was not written in Gambas but in C++/Qt.
>>>>>
>>>>> Sounds rather clever, but I hope my idea won't become so extensive
>> :-)
>>>>>
>>>>>>
>>>>>> Don't get bogged down into thinking that if you use GAMBAS for a
>>>> portion of
>>>>>> the app that you must use it for the whole app. You can create
>>> powerful
>>>>>> systems by combining the resources found other tools. Gambas and
>> most
>>>> Linux
>>>>>> software is designed to allow this kind of inter-connect via pipes,
>>>>>> sockets, and files. So pick the tools that make each part of the
>>>> process
>>>>>> easiest and you development will be simplified.
>>>>>
>>>>> Yes, that was the base of my idea. I started inventing a whole-in-one
>>>>> app with Gambas: contact form, control, pdf, everything. Then I
>> thought
>>>>> there is a nice contact form plugin already, so why inventing the
>>> wheel?
>>>>>
>>>>> Ok, let's get back to the point: reading an email (pop3 from the
>> remote
>>>>> server to the local one) and placing it somewhere to let a Gambas app
>>>>> process it, how should I start? Where can I find the emails? Isn't
>>> there
>>>>> a mail command I can use from a bash script? After all, there are
>>>>> scripts on every system that send mails to root. And where are these
>>>>> mails stored then? When I know where, I can examine the files and
>> find
>>> a
>>>>> way to process them in Gambas.
>>>>>
>>>>
>>>> So we have two options, right?
>>>>
>>>> a) Run a Gambas CGI script on the webserver which receives the user
>> input
>>>>     via HTTP (GET/POST) from the HTML form.
>>>> b) Have a Gambas daemon on your local computer which checks regularly
>> for
>>>>     new mails dropped by an external program. Or even better: Have a
>>> Gambas
>>>>     program which is fed with incoming mail whenever it arrives.
>>>>
>>>> It seems that a) is not the topic here. So, for b) you need a mail
>>> daemon.
>>>> I
>>>> personally use fetchmail for all my mail (IMAP). It also understands
>>> POP3,
>>>> according to the manpages. And the best thing is: it has the "-m"
>> switch
>>>> which lets you give it a program (Mail Delivery Agent) to which it will
>>>> pipe
>>>> its mail. The MDA shall sort/distribute mail correctly but you can
>>>> equivalently well use it to call any program with every incoming mail
>>> being
>>>> piped to it. You can then examine the mail and do whatever you want.
>>>>
>>>> I use fetchmail for around 3 years now and the system didn't fail once
>> -
>>> or
>>>> it was so unimportant that I didn't notice. The only issue you have is
>> to
>>>> install and configure fetchmail correctly.
>>>>
>>>> I just tested fetchmail's -m option with a self-written program and it
>>>> works
>>>> as expected.
>>>>
>>>> Regards,
>>>> Tobi
>>>>
>>>>
>>>>
>>>
>> ------------------------------------------------------------------------------
>>>> See everything from the browser to the database with AppDynamics
>>>> Get end-to-end visibility with application monitoring from AppDynamics
>>>> Isolate bottlenecks and diagnose root cause in seconds.
>>>> Start your free trial of AppDynamics Pro today!
>>>>
>>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>>> _______________________________________________
>>>> Gambas-user mailing list
>>>> Gambas-user at lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>
>>>
>>>
>>>
>>> --
>>> If you ask me if it can be done. The answer is YES, it can always be
>> done.
>>> The correct questions however are... What will it cost, and how long will
>>> it take?
>>>
>>>
>> ------------------------------------------------------------------------------
>>> See everything from the browser to the database with AppDynamics
>>> Get end-to-end visibility with application monitoring from AppDynamics
>>> Isolate bottlenecks and diagnose root cause in seconds.
>>> Start your free trial of AppDynamics Pro today!
>>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> Gambas-user mailing list
>>> Gambas-user at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>
>>
>> ------------------------------------------------------------------------------
>> See everything from the browser to the database with AppDynamics
>> Get end-to-end visibility with application monitoring from AppDynamics
>> Isolate bottlenecks and diagnose root cause in seconds.
>> Start your free trial of AppDynamics Pro today!
>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
>
>
>




More information about the User mailing list