You might consider deploying your own SSO environment (notice I didn't say to "roll your own").
One I've personally contributed to is Jasig's Central Authentication Service (http://www.jasig.org/cas) which serves as a centralized authentication platform for your users to login to. Your "client" applications then would need to be "CAS-ified" (integrated) with CAS so that it authorizes the user's access if they've already been authenticated by this third-party software.
Pertaining to your question, the component I contributed to was their ClearPass extension (here) which, while increasing security risk as in any application that utilizes encryption over hashing, allows you to proxy for clear-text credentials (here).
Purpose (ClearPass): To enable single sign-on into some legacy application it may be necessary to provide them with the actual cleartext password. While such approach inevitably increases security risk, a number of institutions found it to be a "necessary evil".
Upon successfully completing the ClearPass transaction, you end up with the user's login and password. Note that this would be the user's application login credentials; what the user uses to login to your application which handles authentication to third party email services on their behalf.
Login credentials in hand, you could then re-request their application password via ClearPass over and over again to decrypt service passwords on-demand which you originally encrypted with their login password so as to address the "Password Manager" problems described by @executifs. Storage of the user's application password is handled by ClearPass, encrypted by the EncryptedMapDecorator, and stored in memory (or in memcached, etc).
As an aside, here's a quick wiki page on crypto implementation I wrote up not too long ago back when I was working with encryption and ClearPass (and yes, it has been submitted to ##crypto on Freenode for mass-criticizing and revised as needed) in case it helps any.
For actual code, here are some examples in Java, Node., and yes, even C#. Notice the last two are essentially my ports of the EncryptedMapDecorator.java
with respect to Password Based Key Derivation (deriving a secret key based on your passphrase), Initialization Vector (secure random bytes), and even packing. After studying the resources I've outlined assembled here, and these code examples, you should have enough knowledge to be able to port this over to PHP, or at least get started anyways :)
Hope some of this helps!