Use push notification from Gmail - email

I would like to write a android application that makes some actions when I receive an email. For that, I want to use push notifications from gmail server.
I have already used IMAP to read the inbox, but this is polling.
I have read tutorials to use GCM, but in my case I do not want to create a server but use one existing (here gmail) as some mail applications do.
Can you give me direction to follow please ?
Thanks in advance

Well ... it seems to be not possible to "connect" on Gmail server. (not found)
An other solution is to use IMAP with Idle feature. It works perfectly for me.
The different Email APK which exist and propose "push" notifications "cheat" using IMAP Idle.
The inconvenience is that the connection to the server shall be kept opened despite regular timeouts. So it is equivalent to do "polling".
I hope this "summary" will help someone ...

Related

Freeware e-mail client for small companies excluding Thunderbird

I'm looking for some e-mail client with:
multi accounts,
IMAP protocol,
signatures,
e-mail addresses sync,
freeware for business use.
I don't want Thunderbird because it freezes sometimes and stops receiving new mails. Synchronisation is riddiculous... Annoying thing is search box... The results aren't clear at all.
I wonder if there's any that works fine, has all the options I want and is freeware.
Alternatively if there's some non-freeware that is noticeable, you can list it here.
Thanks in advance!
You can use OperaMail (http://www.opera.com/computer/mail), eM Client (http://www.emclient.com/) or Evolution (http://projects.gnome.org/evolution/)
I think that the best is OperaMail
I'd go for the e-mail client that is built in the Opera browser if I had a small company. You have one application for web browsing and e-mail communication with lots of features. I however have no idea whether you are able to choose you browser freely.
Other alternatives could be Pegasus Mail and Incredimail.

Transfer old email messages to new server

Novice in the tech aspects of email servers here:
Situation: We have an old hosting (and mail) provider that we're moving away from. They are using Mail Enable Enterprise (it's a microsoft server in case it matters and they don't have cPanel). They have 7 GB of our email messages on their server, we also have those messsages downloaded to a machine via IMAP.
We need to: transfer these messages to a new server / provider. I went ahead and asked HostGator tech.support and they are unable to do the import so I am looking for a different provider who can import the messages (and folders) and then just be a good email provider.
Question: Could you suggest a provider (does Google Apps do that?) that let's me import / upload messages to their server OR maybe suggest another way of solving this.
Well, you have IMAP on both sides, right?
Drag'n'drop in your email client will work just fine. Yes, it's a lot of data, and it might take a bit, but it's the simplest thing that might possibly work. It's hard to go wrong with simple things.
There's also imapsync, but then you'll need to already know the login information on both sides, which is something you might not have for every account on the old server.

Does JavaMail support server-push?

Does JavaMail support notification of new emails through server-push?
If yes, where is the documentation for that?
If no, is there a library that can do it?
You should be using IMAPFolder's idle function to issue the idle command to the server. That will then listen for events, such as a new mail or deleted mail. (See the IMAP spec to see what the messages look like). And you should be using a MessageCountListener to execute code when a number of emails in the mailbox change.
IMAP's idle function is exactly meant to imitate "push" functionality.
http://java.sun.com/products/javamail/javadocs/javax/mail/event/MessageCountListener.html
http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/IMAPFolder.html
Sorry I didn't post any code that shows how this is used. I didn't want to waste my time since there are many readily available examples on the internet if you search for this stuff.
But be forewarned, this method won't work for more than one IMAP account since the idle command blocks. Unless you want them all on different threads (bad idea).
A Store event listens for notifications issued by your backend store:
http://java.sun.com/products/javamail/javadocs/javax/mail/event/StoreEvent.html
But in my experience the java mail docs are so thin in places, that the best way of finding out what is going on, is to debug through the process yourself.
This is a great allround resource as well; the JavaMail FAQ :
http://www.oracle.com/technetwork/java/faq-135477.html

Mail Client without POP or IMAP

My university refused to allow us to access out mail via POP or IMAP etc so I want to write a GTK based C app that sits in my notifcation area and does the job of a mail client notifier. Because I can't use anything like POP or IMAP, what would be a good way to do it? I guess I could scrape the HTML and look for a tag that is only present in unread mail or something?
Any Ideas?
I know you said C/GTK but it's a piece of cake in Python/GTK with urllib2, libcookie, and BeautifulSoup. That way you don't have to deal with raw sockets, and parsing the HTML yourself. Hell if you edit your question with a link to the source I could hack this up for you in no time. But if you're doing this as a socket exercise, more power to you :P
You should note that most server admins don't take too kindly too frequent scraping of their site, and you should probably clear it with them, lest you face the repercussions.
Well yes, if the only way to access your email is through webmail then any tool you create will have to use the webmail markup to work out new messages.
Personally I'd try and find out why POP/IMAP isn't allowed. As far as I'm concerned that's a really strange policy.
In precedent job, the only access we had to email was through a webmail (squirrelmail) at the time, I had wrote a Perl script with WWW::Mechanize that went through the pages to fetch the emails, send them via smtp to an external mailbox, delete them, and expunge the trash...
It's was about 20/25 lines of code. Off course, a C version would be a bit bigger because it would not have WWW::Mechanize :-)

Method for email testing

I am writing a program that will be emailing reports out many (~100) clients which I want to test before I spam everyone.
I want to do a test run against my production data and actually send the messages to a SMTP server, but I don't want the SMTP server to actually deliver the messages. I want the server to act like a real SMTP server from the perspective of my application, but instead of delivering messages, I just want it to store the messages, and log what happened.
Is there a SMTP server specifically designed for testing purposes?
Does anyone know of a way to configure exim or postfix to behave like I have described above
What do you use to test a mass-email delivery?
In java you can use dumbster
Its easy to use and you can validate every aspect of the email you are intercepting.
It's a Java SMTP server implementation meant for unit testing. (Just make sure you redirect your email to the machine running dumbster...)
I just found another alternative that do almost the same: Greenmail
Greenmail also support POP3, IMAP with SSL so you can test your client against it.
For .NET I set the config file to deliver mail to a folder, then you can have the automated test inspect the directory and files.
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\pickupDirectory"/>
</smtp>
</mailSettings>
</system.net>
While searching for options I found the following that may be useful.
DevNullSmtp
Use a null SMTP server for testing
Fake SMTP Service
twisted examples/emailserver.tac
"The Wiser framework for unit testing mail"
I've heard of a few other developers moving from Dumbster to Wiser and have migrated my testing code as well. One of the Java components that I've worked on sends thousands of emails a day and I've written unit tests for the different email templates and scenarios using Dumbster and Wiser. I prefer Wiser.
Snips from the Wiser website (http://code.google.com/p/subethasmtp/wiki/Wiser):
Wiser is a smart replacement for Dumbster and is built on top of the SubEtha SMTP Java library which allows your Java application to receive SMTP mail with a simple, easy-to-understand API.
A good program for email testing is smtp4dev (Windows only).
It's a dummy SMTP server. Sits in the system tray and does not deliver the received messages. The received messages can be quickly viewed, saved and the source/structure inspected.
http://smtp4dev.codeplex.com/
http://skaraarslan.blogspot.com/2008/02/how-to-check-email-works-without-using.html
(this presumes you are using .net to send emails)
Given that you mention exim and postfix (which I'm taking to be some kind of unix stuff), this answer might not be as useful as it could be, but check out Neptune. It's a fake SMTP server designed for automated testing. If you've got a spare windows box floating around, you could put Neptune on that then configure your app to send "through" the Neptune server.
Exim can be configured to accept incoming mails but not deliver them. Look for the keywords queue_only and queue_only_file in the documentation.
I personally modify the e-mail addresses to test, I send them to a dummy account of mine, that way I can validate not only that they sent, but that they appear in the proper format.
At my office, we have a server that is set up to always send all incoming mail to one address, regardless of who it's actually addressed to. We just point all our testing environments at that server and watch the QA mailbox fill up. I don't know what server it is, but it's probably some open source thing someone found.
Sendmail has a Test Mode.
You just invoke sendmail with the -bt parameter. As an example:
/usr/lib/sendmail -bt -Ciu-testconfiguration.cf
Please be aware that in this method, Sendmail requires an special configuration on rewrite rules. You need to understand how Sendmail rewrites addresses in order to properly create a .cf file for Test Mode.
Edit: See this article: http://ussg.iu.edu/usail/mail/debugging/
After not beeing happy with the solutions I found, I ended up writing developmentSMTP, easy to use, 100% Java --> cross platform.
Supports writing emails to file, forwarding emails or simply printing them on stdout.
Post Hoc is a pure Java application that looks exactly like an SMTP server to the application you are testing, but it simply collects all the email messages and allows you to inspect them using a web interface.
Freely available at: Post Hoc GitHub Site
For more information: PostHoc: Testing Apps that Send Email
If you're looking to manually test that the email sends and that the email template has the right kind of html and css that you're expecting, then I would recommend maildev https://www.npmjs.com/package/maildev. You can install and run it as a node module and also as a docker container! I've found it extremely handy for basic sanity testing of emails.