1

Members can set to be notified (or not) when they receive a private message from another member. However, this email is sent immediately after the private message is sent.

Ideally, the email notification can be bundled and sent, say, once a day. And if the private message is already read before the email notification is sent, the no need to send email notification for that private message. Is this possible to configure in EE (or via addon)?

4

You might want to take a look at Postmaster (https://objectivehtml.com/postmaster/) for doing this. With Postmaster I believe you can create 'tasks' which can be executed by cron and it provides facilities to handle custom messaging etc.

It's also possible to set up notifications with some templating logic and these can also be triggered via a cron.

I'm not super-familiar with it (as you can probably tell!) but I think it will help you in this case and the author provides very good support.

| improve this answer | |
4
+25

it is not possible to do this with standard EE function. So you need make a new add-on - module with action which you can run by cron. Every time when cron will be run, you can get unread PM for last 24 using next query:

SELECT md.message_id as message_id, md.message_date as message_date, md.message_subject as subject,  md.message_body as message, mc.recipient_id as recipient_id, m.email as email, m.screen_name as name  
FROM exp_message_data as md 
LEFT JOIN exp_message_copies as mc ON md.message_id = mc.message_id 
LEFT JOIN exp_members AS m ON m.member_id = mc.recipient_id 
WHERE mc.message_read = 'n' AND md.message_date > UNIX_TIMESTAMP(NOW() - INTERVAL 24 HOUR)

This query give us enough info to send message. After that send email by ee email function or send it to Mandrill/Postmark/SendGrid/PostageApp(you can also just use plugins like Escort to route emails to third-party transactional email services).

Approximate time of developing - 2-3h.

p.s. you also need to disable option ("Notify me via email when someone sends me a private message") in Member Profile Templates > Email Preferences Form or replace it with select Send email immediately / Once per 24h.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.