[Gambas-user] Receiving an email

Sebastian Kulesz sebikul at ...626...
Tue Jul 16 00:57:41 CEST 2013


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
>



More information about the User mailing list