[Gambas-user] Receiving an email

Randall Morgan rmorgan62 at ...626...
Tue Jul 16 00:37:04 CEST 2013


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?



More information about the User mailing list