views:

220

answers:

2

Hi,

First of all I am aware that e-mail recall rarely works, and then usually only with Microsoft Exchange server.

Despite the limitations, a client has requested this feature.

My understanding is that the RECALL functionality in Microsoft Exchange is a proprietary extension of the SMTP protocol, and sends a new e-mail asking for a RECALL to the client. The client then does its best to recall the message.

I have found no documentation on what the RECALL extension to SMTP is, and I don't really fancy pulling out wireshark in order to trace it yet. I did found suggestion for an RFC extension of SMTP in progress http://tools.ietf.org/html/draft-leiba-morg-message-recall-00 and I assume this is similar to Microsoft's solution.

Since our solution is PHP based, I am therefore asking: Does there exist a method in PHP to send an SMTP recall request for a previously sent e-mail?

Regards Dagfinn

+1  A: 

Does the client specifically ask for interoperability with Exchange and RECALL, or is she using that as an example of whats she's after?

If it's the latter I suggest you propose an alternate solution using a grace period before the e-mail is actually sent to the SMTP server. To the user it'll look like the e-mail is sent but she'll be able to undo the send within the grace period (for instance 10 minutes).

-- Alf

Alf
Thanks for the response Alf. Yes, the client specifically states that it should be possible to recall email messages. However, there is no mention of Microsoft Exchange.A grace period before sending would be our backup solution.
dparnas
+3  A: 

I don't think this has anything to do with SMTP.

Rather, if you try sending a recall message to your non-Outlook operated email account, you can see that it's simply an email message. My guess is that either the receiving Exchange server or your Outlook client will recognize such messages and perform the appropriate action.

The content of the recall message seem to be quite simple, with nothing of obvious interest in the email headers. The message body (which I cannot view in plain text form where I'm at right now, unfortunately) simply says:

John Doe would like to recall the message, "foo bar subject".

In any case, I doubt any PHP email library supports this out of the box. However, it should be fairly easy to implement, since it probably just requires you to create a proper email template and fill in the blanks with a subject, name and perhaps a message id.

csl
+1 I think there is no more to it than this. Should be easy to implement in PHP using the right headers.
Pekka
Smart way of finding out what happens with the recall message :) Seems easy to implement too.Do you mind posting the recall mail in raw text format when you have the chance?
dparnas
@dparnas: I'll post it if I remember it when I get home from work :) I need SSH access to my account, which I don't have from here.
csl
I've managed to check the raw mail and the only relevant content isSubject: Recall: test recallDagfinn Parnas would like to recall the message, "test recall".=I believe exchange/outlook looks for the subject and the end marker .= Note that .= has the hex code 22 2E 3D 0A (if you write . =in a normal mail the hex code is 22 2E 3D 33 34 0A)
dparnas