Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 3.0.0.b6
-
Fix Version/s: 4.0.0-b1
-
Component/s: Staff Interface
-
Labels:None
Description
We need to create a mass mailer plugin. It should probably register itself under Tools, and allow a mass email with the WYSIWYG editor.
You should be able to filter users by group, package, module, and preferably module row even.
This plugin should be called *Mass Mailer*.
- Create a navigation link under Tools called "Mass Mailer".
- Create an ACL setting for staff group access to the Mass Mailer. Only 1 permission is necessary, and without it, no access is granted.
Under Tools > Mass Mailer will be a view consisting of:
1. Filtering Options
- Client Options
1. Client Group (Multi-Select, select all by default)
2. Language (Multi-Select, select all by default)
3. Status (Multi- Select, select "Active" by default)
4. Member Since (2 dates, a beginning and ending date range) - Services
1.Renewing in (text + dropdown. x days/months/years)Renewing by (pick date from date picker)
2. Package or Module (Radio, select Package or Module. If Package, multi-select. If Module, then select Module and multi-select Module Row)
2. Export or Compose (Radio, default to Compose)
- If Export, continue to exporting a CSV of data
- If Compose, display the following fields below:
1. From Name (Prefill with authenticated Staff Name)
2. From Email (Prefill with authenticated Staff Email)
3. Subject
4. HTML/Text box containing WYSIWYG editor (Force HTML and Text content be filled)
5. Preview button (Takes you to the next page where you preview the email, with tag replacement from a random client as well as display the total number of recipients)
Submitting from the preview should show a job number, announce that the job is queued for delivery, and instruct the staff member that they can leave or keep the window open. AJAX requests will periodically fetch the status of the job and display the total number of email sent from the total.
A link at the top of the panel/widget should show "New Job" and "Past Jobs" (Naming subject to revision). Past Jobs will display all previous mailings in a table sorted from most recent to least recent. A link will exist that you can click on to bring you to the job status page for that job. If the job is not complete, then AJAX fetch the status periodically. This can be used to view a job that was started and then left.
How it works
==========
When a "job" or mailing is created, a CSV file containing all of the recipients is written to disk. Other information about the job, such as the email content, from name, from email, subject, and job number are stored in the database as well as the last successful position in the CSV file that was mailed. If the mailing crashes, cron can pick up where it left off.
Tags
====
Client Tags (Always available)
Asterisks denote fields to include in the CSV export
- *ID Code
- *First Name
- *Last Name
- *Company Name
- Address (Possibly Address 1, and Address 2)
- City
- State
- Zip/Postal Code
- Country
- *Email Address
- *Member Date (When the contact was created)
- Status
Service Tags (Available only when filtering by services)
- *Package Name
- Package Description (both text and html versions)
- Package Status
- *Service Label (for example, the label for a cPanel service is the domain)
- Service Date Added
- *Service Date Renews
- Service Date Last Renewed
- Service Date Suspended
- Service Date Cancelled
- Service Status
- *Module Name
- *Module Row Label (for example, the module row label for cPanel would be the server name)
Logging
======
Do not log email sent from the mass mailer in the standard database email log by default. Consider a checkbox in the UI when composing an email whether to log. Checkbox "Log Emails", unchecked by default.