Vanilla 1 is no longer supported or maintained. If you need a copy, you can get it here.
HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.

MassMailer 1.0

edited July 2009 in Vanilla 1.0 Help
Due to the requests for modifications in NewsMailer 0.2 by hutstein, I branched off and created MassMailer, where I can hopefully remain active on the extension. The main difference is that any user with proper permissions may now send mass emails. In addition, it uses Vanilla's built-in objects to retrieve information instead of direct database calls, making me feel better about security. And best of all, I should be around enough to satisfy feature requests. :) Other changes are listed on the link below. Also, this is my first packaged extension, so please let me know if there's something out of whack. Link: http://lussumo.com/addons/?PostBackAction=AddOn&AddOnID=228 Enjoy! ---- Planned for Version 1.1: - Provide opt-out via a user preference and possibly a clickable link - Allow for a configurable header and footer to be placed on each sent message - Work cleanly with basic installation of Friendly URLs ---- Planned for Future Version: - Provide configurable pacing of email sending - Integration with Predefined Attributes - Recipient Filters (Last Login Date, Last Participation Date, etc.)
«1

Comments

  • Hey I tried out your extension to replace the newsmailer extension and when I tried to send an email I got this...

    Here is the error I recieved ->


    Notice: Undefined variable: Roles in /home/waterski/public_html/rivercity/community/extensions/MassMailer/default.php on line 43

    Warning: Invalid argument supplied for foreach() in /home/waterski/public_html/rivercity/community/extensions/MassMailer/default.php on line 43
    Brian

    Send Mass Email The message was sent.



    This is line 43 ->

    foreach($Roles as $rl) echo $rl;
  • Crap, of course I upload my debug version instead of the correct one. Either way, it should work correctly now. If you'd rather just delete the line, it is unneeded. Then search around line 65 and delete the other "echo" line that writes out the username. Sorry about that, thanks for letting me know.
  • Hi!

    Is it possible to make it a "Newsletter System", where User can opt in (and of course opt out) for newsletters?

    Tiggr
  • That would certainly be useful...
  • I do plan to add the feature for users to opt out of all Mass Mailings, it may take a few days though before I can get around to it. If you have extension experience, it should be as trivial as adding a user preference and checking it in the email loop... If it's an easy enough fix I'll have something ready soon.
  • /me clears throat *ahem*

    Mailing should be opt in, not opt out...
  • Technically, you pretty much opt-in when you join the forum, but you really should make note of it to users.
  • More sophisticated would be the possibility to opt in for different themantic newsletters!
  • So long as you make it *very* clear when they're signing up and give them the option to untick, then I nearly agree chuyskywalker. But that's still opt-out ;)
  • MarkMark Vanilla Staff
    Nice work!
  • How does this send the emails, I know they are from whatever email address is of the user that is sending it, but is it going through a reputeable server, so that it doesnt get spam or blacklisted by email services like yahoo, aol, msn... I tested it using gmail... Works...
  • Practical suggestion (did not check code or plugin yet): add a option for QUEUING/ PACING (max # emails per minute/hour/day)
    as many ISPs have limits on #emails/minute/hour/day for anti-spam reasons (and block you for a while if you go past those limits).
  • Damn good suggestion Tom...
  • TomTesterTomTester New
    edited December 2006
    OPT IN/OUT
    I'd vote to keep it simple & not to overdo it. Once signed up for a forum (which is opt-in and requires verification)
    I would not bother people again with opt-in for emails.

    TIP: Don't forget to add a paragraph or two to the terms of use to cover your *ss (the one they agree to for sign-up).

    FEATURE REQUEST (if not there already)
    The FOOTER of every email message sent should contain an opt-out link and identity of the sender as per the CAN SPAM rules:
    http://www.ftc.gov/bcp/conline/edcams/spam/rules.htm
    (Failure to comply with this can be costly)
  • Feature requests/suggestions:

    ROLES/ACCESS
    - Option to select recipients by ROLE (only email admins and moderators)
    - Option to limit LIST ACCESS by ROLE (e.g. you can mail but you can't add/remove/revise list)
    - Option to limit LIST VISIBILITY by ROLE to prevent list theft/abuse (e.g. you can email, but you cannot see the list)

    FILTERS
    - Option to select recipients by ONE OR MORE DATABASE FIELDS IN THE USER RECORD (I'm adding some custom fields)
    - Option to select recipients by LAST DATE PARTICIPATED (I'd love to to email those who care to share, not those who just read, active participants are a forum's lifeblood)
    - Option to select recipients by LAST DATE LOGGED IN RANGE (very effective in filtering those who abandoned your forums, either leave them out or contact them specifically to entice them back)
  • The whole opt in/out thing could be solved easily by having a tick box to untick (don't send me emails) on the registration form along with the little paragraph Tom mentioned. This keeps it simple IMO.

    I understand the opt in nature of a forum, but a forum by its nature is not a mailing list, so if a forum started mailing me without giving me the option of not receiving them from the get go, it'd piss me off a bit. I have many forum registrations, so if they all did this I'd be completely swamped. Yes, I realise that you could then unsubscribe using the email link, but to be honest, it's a real fag to do and I've learnt not to do that with "spam".

    I like all of Tom's feature requests though ;)
  • Wow, gone for a day and it's already evolved into a whole separate application. :) "How does this send the emails" It uses the same settings your forum uses, but simply uses the send name/email of whoever sends it. Most installations probably use Sendmail. "add a option for QUEUING/ PACING" I'd love to do this, but I have no idea how to accomplish something like this in a way that supports any vanilla installation. I could use a cron job, but that doesn't apply to Windows installations. I could delay on the PHP script itself, but then it won't show up to the user for a long time. Any suggestions on how to implement this in a way that's safe for any installation, I'm interested in. "OPT IN/OUT" This will be solved, but I think forums need the ability to set the default preference, or even to allow preferences at all. For example, one installation I did for a private community needs the ability to send mails to the group without permission to block those mails (per their Bylaws). Some sites might want to default to "Opt in", but most public sites may want the user to manually opt in first. I hope to build this to where any of these options are available. "Themed Newsletters" Not totally sure about this one. By default, a forum is already limited in scope of content. However, as a user I might want emails from Administrators, but not "I rawk lolomg!@" emails from moderators. So I see the benefit, but I think initially this might be "too much" for the interface for too little benefit. If there is a lot of interest in this, I'll look into it. "Terms of Use" I'll leave this one to the discretion of each administrator, since community needs are different and they should be editing the terms anyway. However, I'll make a comment about that in the ReadMe. "The FOOTER of every email message sent should contain an opt-out link" Very good call. This change will definitely be made. This was initially for a private community, so there were no worries about this. For those not willing to wait for the next overhaul, it can be easily accomplished by creating a new Dictionary entry and then concatenating that to the Messagenew variable. "ROLES/ACCESS - Option to select recipients by ROLE (only email admins and moderators) - Option to limit LIST ACCESS by ROLE (e.g. you can mail but you can't add/remove/revise list) - Option to limit LIST VISIBILITY by ROLE to prevent list theft/abuse (e.g. you can email, but you cannot see the list)" Ok, currently #1 should be done, if I'm not mistaken. Recipients are already filtered by Role. #2 and #3, there is no "list", per say. There are roles you select, each with predefined members who will have the ability to opt out... Not sure exactly what you mean here, but please clarify if I'm getting something wrong. "FILTERS - Option to select recipients by ONE OR MORE DATABASE FIELDS IN THE USER RECORD (I'm adding some custom fields) - Option to select recipients by LAST DATE PARTICIPATED (I'd love to to email those who care to share, not those who just read, active participants are a forum's lifeblood) - Option to select recipients by LAST DATE LOGGED IN RANGE (very effective in filtering those who abandoned your forums, either leave them out or contact them specifically to entice them back)" I like these suggestions, especially #1, which one of my clients have already requested. I'll add these to my list, as I think they are all beneficial. Thanks for all the suggestions, keep them coming! I'll hopefully come back soon and edit the main topic with a new feature set for the next release.
  • "The FOOTER of every email message sent should contain an opt-out link"
    Ideally, when you click this link it would take you to a page where you can just click a great big "Unsubscribe" button, or even just something saying "Thanks for unsubscribing, if you would like to subscribe at a later date, please tick the box in your account preferences." or something similar :)
  • PACING
    Sorry David, did not want to complicate things here, just need a proper mailer and having
    one integrated with the forums would save me a lot of headaches. The 500 an hour max
    I mentioned quickly fills up when you have 500+ members on a board.

    The outgoing email pacing thing really is an issue with MANY shared hosts. Since I expect
    95% of the Vanilla installs to be on a LAMP platform I think a cron job would do quite nicely.
    If anyone has a suggestion on an alternative to PHPMail (which has pacing built in) I'd really
    appreciate it because its interface is horrendous.

    ROLES/ACCESS
    LIST ACCESS by ROLE - e.g. have granular access levels when mailing (some people may send
    a mail from a template, e.g. local newsletter, others may interact with user list. This all
    depends on the setup of the forums so ignore this for now.

    LIST VISIBILITY by ROLE - e.g. allow superadmin to let 'moderators' send mass email, but never
    show the full list of real names or email addresses so they can be copied.

    THEMED NEWSLETTERS (who said that?)
    Notification emails do not need much branding, yet not everyone is a minimalist nerd like
    myself, and thus directed mass emails could benefit greatly from branding (+ add legitimacy)

    I'd like to tack on one more in the template arena:

    BASIC MAIL MERGE OPTIONS
    Many people like the "Hello Tom," thing (fools, we don't really know or like you!). If you do
    the theme thing i.e. allow for fixed graphical and textual elements within which to insert
    the message with {{message}}, then please enable some basic mail/merge {{firstname}}
    {{lastname}}, {{email}}, {{databasefield}} as well etc.
  • edited December 2006
    Ok, I think I get what you're looking for... Pacing I can probably accomplish, but I've never messed with php+cron. Is there another extension out there currently doing something with cron scheduling that I can borrow some skills from? Also I will probably disable this by default, and those that need it can manually enable it. I'm still not entirely sure how to implement it as I'm using Vanilla's email object and prefer to keep it that way. Or is it as simple as storing serialized email objects somewhere, and then cron-ing a script that picks one up, deserializes it, calls the send method, sleeps for X seconds, repeat until no more emails? I've only ever developed pacing routines in a multi-threaded environment. Edit: For cross-platform compatibility, should I go with an index.php cron hack? Where on any page visit on the site, it sends a number of emails determined by some formula (combination of: amount of time to send all messages, number of messages, number of messages allowed per hour, etc.)? That would also be more appropriate as not requiring any external dependencies for extension functionality. But it's dirty. List access, currently nobody has that information. If a user hides his email address, it's simply hidden. Right now, mails are sent to recipients by Role, so a person can do a user search for that role and get a list of users, but only the ones with publicly visible emails can be seen by whoever sends the email, and even then, only in a manual search fashion. Basically, Roles become the list as you would normally make it, integrating things right in the core of vanilla. Themed newsletters idea was less about branding the emails and more about defining a set of attributes describing the types of emails being sent, and allow users to opt in and out of each. Such as, they could opt in to "Announcement" emails but out of "Jokes" emails. As a fellow minimalist, this seems a bit overkill for right now, unless a lot of people report wanting this feature. However, this does present the opportunity to allow for branding via a configurable email header and footer. The footer needed to happen anyway for the can-spam guidelines, but a header might also be appropriate, where any site-wide information may go. The question then becomes Text or HTML, or both and also allow messages to be either text or html, and make the header/footer follow that. Need to think of a good way to implement this. Probably text only for now. Mail merge: I already allow for a few fields, such as name, username, email, url, role, etc. I'd like to integrate this with Predefined Attributes as well at some point, but that may be a bit too much for right now...
Sign In or Register to comment.