i am searching for a way to read mail messages from a PHP application, including access to attachments etc. imap functions are not acceptable as a solution, as this application will handle mails with heavy attachments.
i have full access to the server's mail folder from php via filesystem. any thoughts?
I think you could use a combo of the Pear packages Mail_Mbox and Mail_mimeDecode. Use Mail_Mbox to read new mail from the inbox, one message at a time, and use Mail_mimeDecode to extract the attachements. All this will be done w/o IMAP. You can then save the read messages to a different mbox to keep the inbox clean.
Pear - Mail_Mbox
Pear - Mail_MimeDecode
I had a question like this a while back. See if any of the answers help you:
How to get email and their attachments from PHP
postfix + maildrop was the solution I ended up taking, It routes the emails through to a PHP script when it arrives and in my case, the PHP does something with the attachment. But I only needed to read each email once. If you need to be able to browse all the emails, you either need to store the results of maildrop or find another solution.
If you need to full access to all emails, POP and IMAP are popular choices because they do work. I'm not sure why you're against them.
Related
I know that SwiftMailer is used for sending emails, but I'm trying to parse an email that has come into my PHP script. We already use SwiftMailer in our Symfony site, so I'd like to use it, if it can do what we want.
Scenario:
The email is piped into my PHP script by postfix. I then grab this from StdIn and want to load it into SwiftMailer so I can get easy access to the components - i.e. attachments / headers, to / from etc..
I've searched around on this and tinkered with the SwiftMailer code and can't find any examples or even any indication of direction to look in.
Any help would be gratefully received.
Once or twice a year i find myself in the position of having to develop complex emails.
They often include Plaintext and Html versions, along with attachments and other headers.
Previewing the development using standard send/receive is painfully slow and tedious.
What i'm looking for is a local testing platform that processes the mail function and provides a mail client style preview with access to alternate views, headers, etc. Or possibly a real mail client that can take mail directly.
I've searched and searched but no luck so far, hopefully someone can point me in the right direction.
Thanks in advance. TT
I'm not sure if this is what you want but you can use your localhost mail and access it via thunderbird for example
How do I read local email in thunderbird? - Ask Ubuntu
Via this way you don't have to wait endless for mail to be delivered as it's local. And you can see your send mail in a actual mail client
I don't know any software but I had some good experience with the following online service: http://litmus.com/ It's somewhat like browserstack. (live crossbrowser testing tool)
I use Papercut, which listens to a SMTP port, catchs all e-mails and shows headers, source, text and html view. It's very useful!
I have now solved this.
In the php.ini file there is an option to set an export path for the mail function called sendmail_path.
I set this to tee mail.eml > /dev/null and it now saves the sent mail to the same directory as where the function is called and i simply open it with my mail client.
sendmail_path = tee mail.eml > /dev/null
2 notes on this.
this is a solution for unix platforms only.
the file extension has to be set to suit your chosen mail client
For a task like this I use fakemail for receiving the mails into a maildir and mutt for reading the mails. Mutt can also be configured for reading HTML mails.
If you just want to log the emails without reading them, you could use the "logmail" approach described in this article by Chris Shiflett:
Edit: The lastcraft.com host seems to be down at the moment, my Google search for "fakemail" revealed this Python project that might be helpful: https://github.com/isotoma/FakeEmail
If you're just looking to preview your HTML emails (and alternatively, if you need help designing them) you can sign up for a free MailChimp account. It's actually an email send service, but they also have an interface for a drag-and-drop email builder.
For your situation, you could use the "code your own" tool, drop in your HTML, CSS, plain text, etc. and then preview the email in all sorts of email clients, test at different screen resolutions, etc.
(*I am not affiliated with MailChimp)
You can also try https://github.com/ycecube/phpmaildebug.
It uses the php's sendmail output to capture the mails.
I want an easy way to get my email (using Mac Mail or Outlook) to a web server using Apache/PHP to be processed and added to an archive, a database. Is there an easy way to do this? Right now, it seems my best option is to save to disk, open up a page on the site, and upload the email like a file. Is there a better way?
If you want to do it as one off, saving and uploading will probably be the easiest solution.
If you want to do it continually, you might want to look into piping email into php Email piping with php script
Alternatively you can check an IMAP/POP3 mailbox from PHP.
You could create a cron script to automatically scan a specific directory on your webserver daily (or even hourly) to load the files into a db. You would still have to copy them to the webserver manually.
I'm sure there is a better way than that though.
If your aim is ultimately to archive your mail store and even better have your mail flowing to the archive in real-time (e.g once the mails are older than a certain age) then this tool will support your needs. Outlook Mac Archive Tool! calls it Cloud Archive and allows for mail to be stored in mail clouds like Gmail.
The advantage of archiving to a folder in a GMail account is your mail is always accessible through a web interface, searchable and safely backed up in free storage. You could use multiple Gmail accounts if you have excessively large mail stores (e.g. one for each year of mail).
I would like to have a server that is able to receive emails. Then I want to use PHP to program the way the emails are shown to the users. Can I do it purely with PHP? I mean, it is not a problem to send emails from PHP but I do not know if I can receive emails by PHP? (In a way PHP receives POST requests).
ADDED
As a response to the first answer, I would like to specify that it looks like I need an SMTP server. I want to be able to communicate with the SMTP server in a programmatic way. For example, I want to have a possibility to "tell" to the SMTP server to create a new e-mail address. I also need to know where incoming emails stored and in what format. For example, how I can extract the "sender", "cc", "bcc" from the file corresponding to the received mail.
would like to have a sever that is able to receive e-mails.
If you are writing it from scratch then you'll need the specification for SMTP. I would advise very strongly against this. SMTP servers are hard to write, and there are several really good open source solutions out there.
My understanding of PHP is that it does very poorly when it comes to multithreading, so it probably isn't a good solution for this problem.
Than I want to use PHP to program the way the mails are shown to the users
Servers that receive mails do not typically show them to users. They usually store them in a standard way (such as Maildir or mbox) which other software (such as a local email client or an IMAP server) accesses.
The job of showing email to a user is belongs to email clients. Web based PHP web mail software includes SquirrelMail and RoundCube. AFAIK they both act as IMAP clients. See the IMAP specification.
As a response to the first answer, I would like to specify that it looks like I need a SMTP servers. I want to be able to communicate with the SMTP server in a programmatic way. For example, I want to have a possibility to "tell" to the SMTP server to create a new e-mail address.
Pick an SMTP server that runs on your OS. Read the instructions to find out how to configure delivery and accepted addresses. It usually comes down to manipulating text files.
I also need to know where incoming mails stored and in what format. For example, how I can extract the "sender", "cc", "bcc" from the file corresponding to the received mail.
Again. See the manual for the mailserver. Most will give you options about where to store the data and in what format.
Then you just need to decide if you are going to get PHP to dig into those directly, or use an IMAP server in between.
No, that is not easily possible. PHP is made for (stateless) http protocol, while a mail is sent in a conversation that is built up from various requests and responses.
It is possible to parse and process mails using PHP, but I would recommend installing a mailbox that you can read from PHP using POP3. Then, your PHP application can show and process mails from that mailbox.
The past few days I've been trying to find out how I can save emails as drafts using php. I've created an emailaddress that uses imap (and resides on the same server).
What I would like to do is to use php to create an email and store it in the drafts folder. These emails would then be recognized by the email client (ms office outlook in this case) so they can be editted and send from the email client.
I've found some interesting information about the imap functions from php, they let you send mail, but I can't really figure out how to store them in the drafts folder (to which I have write access). I can actually find and read the emails, I save as drafts in my email client, using my ftp connection. However they make use of UID and message-ID's and such which I don't understand where they come from.
My questions:
- how could I create email drafts
- How does a new UID or message-ID get created, and how would I use them for my email-draft file?
Help is much appreciated, thanks.
Yorian
Have you checked if the proper extension is installed? To use the php imap functions the php5-imap extension must installed. You can check this by using phpinfo(). When there stands nothing about "imap", the extension is not installed.
Look into imap_setflag_full. there's a \draft flag.
AFAIK you can use imap_append() to store the mail in the INBOX.Draft mailbox (function.imap_append)