[Gambas-user] Receiving an email

Randall Morgan rmorgan62 at ...626...
Tue Jul 16 01:06:06 CEST 2013


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
>



-- 
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?



More information about the User mailing list