Go Back   vb.org Archive > vBulletin Modifications > vBulletin 4.x Modifications > vBulletin 4.x Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
[DBTech] vBMail v2 (vB4) Details »»
[DBTech] vBMail v2 (vB4)
Version: 3.3.0, by DragonByte Tech DragonByte Tech is offline
Developer Last Online: Mar 2023 Show Printable Version Email this Page

Category: Administrative and Maintenance Tools - Version: 4.x.x Rating:
Released: 07-01-2011 Last Update: 08-16-2017 Installs: 181
DB Changes Uses Plugins
Additional Files Translations  
No support by the author.

vBMail: What is it?
vBMail is a professional mailing list mod with Bounced Mail handling and advanced subscription management features.

Uses

vBMail is the perfect solution for any forum who wish to send out large quantities of mail to users on a mailing list. It lets admins and users have fine-grained access to subscriptions, and also automatically handles bounced mail.

-------------------------------------------------------------------------------------------

If you like this mod please hit the button to the right ---->

Please remember to click the, button to the right if you installed the mod ---->

What does 'Marking As Installed' do ?

* It helps you to stay on top of updates - members who have installed modifications will be notified by us whenever new updates are available.

*
For security issues - vbulletin.org will contact all members who have installed a modification whenever a security issue is brought to their attention.

* Marking a modification as installed also helps us know how many people are using our work, giving us extra incentive to provide more features and new modifications.

We appreciate the support!
-------------------------------------------------------------------------------------------

Priority support & Product Demos available at: http://www.dragonbyte-tech.com/

-------------------------------------------------------------------------------------------

Translations available @ our forum
Support for translations handled by the translator in its respective threads only.

-------------------------------------------------------------------------------------------

Major Features:

Bounced Mail Handling: Once configured, it will (if so desired) automatically track and handle bounced mail. Alternatively, you can manually handle bounced mail if you so wish.

Automatic "Unsubscribe" Link Creation: If the user receiving the mail has access to unsubscribing, a secure link to unsubscribe themselves from the mailing list will be automatically added to the bottom of the mail. It does not require the user to be logged in, so it complies with spam policies set forth by mail providers.

Mail History: Each past sent mail can be viewed at any time from the front-end.

Advanced Subscription Management: Users can quickly and easily (un)subscribe from the mailing list via the mailing list directory, or the admin can manually change the subscription status in the AdminCP.

Bounced Mail Threshold: When an admin-configured number of mails bounce from the same email address, the user is automatically removed from mailing lists and all other email-related vBulletin features, and notified via PM what happened to their account, as well as directions to change their email addresses.

Complete Feature List (Lite)
  • Mailing List Directory
    • List all mailing lists
    • Links to send mail / view mail history / (un)subscribe
    • Unsubscription stats
  • Send Mail
    • Uses the full editor in vBulletin
    • Works with 4.1.4's CKEditor
    • Uses vBulletin's Mail Queue system to avoid overloading servers / avoid "maximum mails per hour" server restrictions
  • Mail History
    • Displays a list of all mail from that mailing list
    • View the mail in full HTML
    • Unsubscription stats
  • (Un)subscribe
    • One-click to add or remove from a mailing list
  • AdminCP
    • Create unlimited mailing lists with per-list usergroup permissions
    • Create keywords for people to subscribe to
    • View list of bounced mail
    • Prune list of bounced mail
    • Permissions for who can view unsubscription stats
  • Scheduled Tasks
    • Hourly collection of bounced mail
    • Hourly checks for number of bounces above the threshold

Complete Feature List (Pro)
  • Send Mail
    • Subscribe to an external mailing list via the vBulletin Sidebar (vB4 only)
    • Override SMTP settings per mailing list
  • AdminCP
    • Ability to create External mailing lists, powered by emails not found in vBulletin user accounts
-------------------------------------------------------------------------------------------
This mod displays a copyright notification in the footer of pages generated by this mod which includes:
  • 1 Link to DragonByte Technologies homepage
  • 1 Link to Product Description page of this modification

Download Now

File Type: zip [DBTech] vBMail v3.3.0 [Lite].zip (171.2 KB, 52 views)

Screenshots

File Type: jpg vbmail.jpg (21.4 KB, 0 views)

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.
10 благодарности(ей) от:
BCP Hung, chiggy, CybaGirl, Insta-Gator, Jack.D, Jasem, m2006, mcyates, pjkcards, Skaut

Comments
  #102  
Old 09-25-2011, 11:17 PM
CharlieDelta CharlieDelta is offline
 
Join Date: Apr 2010
Posts: 616
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Fixed.
Reply With Quote
  #103  
Old 11-11-2011, 08:55 AM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Firstly thanks for the great hack. It is well written, has a clean code and from checking the source code, I can confirm that a lot of work is put into the project so frankly speaking I believe it is not appreciated enough. So I wanted to tell my appreciation for your work first! :-)

I installed it in a friend's board. He wants to use for bounce email management and not interested in email listing features so my comments are regarding this part only. During installation I had some issues, glitches and fixes for them so I wanted to share with you considering you might want to know about them.

ISSUE 1:

During the initial installation the hack didn't work first. It gave no signal but it was not processing any bounced emails. After some debugging, I noticed that imap_open() was failing with error:
Warning: imap_open() [function.imap-open]: Couldn't open stream {mail.___.com:143/imap}Inbox in [path]/dbtech/vbmail/includes/class_imap.php on line 98
Although all login details were correct.

After some work I noticed our server is requiring /novalidate-cert parameter otherwise, it is dieing with error:
Certificate failure for
___.com: self signed certificate:
/C=US/ST=Unknown/L=Unknown/O=Unknown/OU=Unknown/CN=server1.____/emailAddress=ssl@server1.___"

So changing the line in dbtech/vbmail/includes/class_imap.php:
PHP Code:
self::$connection imap_open(
                
'{' self::$vbulletin->options['dbtech_vbmail_imap_host'] . ':' self::$vbulletin->options['dbtech_vbmail_imap_port'] . '/imap' 
                    (
self::$vbulletin->options['dbtech_vbmail_imap_ssl'] ? '/ssl/novalidate-cert' '') . 
                    (
self::$vbulletin->options['dbtech_vbmail_imap_tls'] ? '/tls/novalidate-cert' '') . 
                
'}' self::$vbulletin->options['dbtech_vbmail_imap_mailbox'],
                
self::$vbulletin->options['dbtech_vbmail_imap_username'],
                
self::$vbulletin->options['dbtech_vbmail_imap_password']
            ); 
as
PHP Code:
            //Logician Hack : Added /novalidate-cert as mail server is rejecting connection without this
            
self::$connection imap_open(
                
'{' self::$vbulletin->options['dbtech_vbmail_imap_host'] . ':' self::$vbulletin->options['dbtech_vbmail_imap_port'] . '/novalidate-cert/imap' 
                    (
self::$vbulletin->options['dbtech_vbmail_imap_ssl'] ? '/ssl/novalidate-cert' '') . 
                    (
self::$vbulletin->options['dbtech_vbmail_imap_tls'] ? '/tls/novalidate-cert' '') . 
                
'}' self::$vbulletin->options['dbtech_vbmail_imap_mailbox'],
                
self::$vbulletin->options['dbtech_vbmail_imap_username'],
                
self::$vbulletin->options['dbtech_vbmail_imap_password']
            );
            
//Logician Hack : Added /novalidate-cert as mail server is rejecting connection without this 
fixed this issue for us.

I think it might be a good idea to:
1- Add a hack setting to enter custom parameters there. Alternatively you can make "IMAP Port" setting inputbox "string", instead of "number" which will then allow entering values like: 143/novalidate-cert
2- In part:
PHP Code:
if (!self::$connection)
            {
                
// We couldn't open the mailbox
                
trigger_error($vbphrase['dbtech_vbmail_cannot_open_mailbox'], E_USER_ERROR);
            } 
It might be helpful to vbmail() admin with the value of imap_last_error() variable as it will help debugging connection problems when hack can't connect to the mail server. ATM admin is in dark when a connection problem occurs as no error etc. are returned. (Even when scheduled task is run manually in admin cp)

ISSUE 2:

In dbtech /vbmail/cron/threshold.php, this part:
PHP Code:
$users $vbulletin->db->query_read_slave("
    SELECT
        user.userid,
        user.username,
        user.usergroupid,
        user.membergroupids,
        user.infractiongroupid,
        user.displaygroupid" 
. ($vbulletin->products['dbtech_vbshop'] ? ", user.dbtech_vbshop_purchase" '') . "
    FROM `" 
TABLE_PREFIX "dbtech_vbmail_message` AS dbtech_vbmail_message
    INNER JOIN " 
TABLE_PREFIX "user AS user ON(user.email = dbtech_vbmail_message.fromaddress)
    WHERE dbtech_vbmail_message.fromaddress != ''
        AND dbtech_vbmail_message.bounce = '1'
        AND user.dbtech_vbmail_bounceflag = '0'
    GROUP BY dbtech_vbmail_message.fromaddress
    HAVING COUNT(*) >= " 
intval($vbulletin->options['dbtech_vbmail_bounce_threshold'])
); 
Should be replaced as:
PHP Code:
$users $vbulletin->db->query_read_slave("
    SELECT
        user.userid,
        user.username,
        user.email,
        user.usergroupid,
        user.membergroupids,
        user.infractiongroupid,
        user.displaygroupid" 
. ($vbulletin->products['dbtech_vbshop'] ? ", user.dbtech_vbshop_purchase" '') . "
    FROM `" 
TABLE_PREFIX "dbtech_vbmail_message` AS dbtech_vbmail_message
    INNER JOIN " 
TABLE_PREFIX "user AS user ON(user.email = dbtech_vbmail_message.fromaddress)
    WHERE dbtech_vbmail_message.fromaddress != ''
        AND dbtech_vbmail_message.bounce = '1'
        AND user.dbtech_vbmail_bounceflag = '0'
    GROUP BY dbtech_vbmail_message.fromaddress
    HAVING COUNT(*) >= " 
intval($vbulletin->options['dbtech_vbmail_bounce_threshold'])
); 
Otherwise email part in the user pm is blank.

ISSUE 3:

The hack is not unflagging user if vb option "verifyemail" is turned off since you tied unflagging only to register.php user activation screen. I added this pluggin to correct this issue for boards which does not use email confirmation:

HOOK LOCATION: profile_updatepassword_complete
PHP CODE:
Quote:
//Logician Hack : If user is not banned AND changed his email correctly AND email verification is OFF, THEN unflag dbtech_vbmail_bounceflag setting
if ($permissions['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'] AND ($vbulletin->GPC['email'] != $vbulletin->userinfo['email'] AND $vbulletin->GPC['email'] AND $vbulletin->GPC['emailconfirm'] == $vbulletin->GPC['email']) AND !$vbulletin->options['verifyemail'])
{

$onoff = '0';
$userdata->set('dbtech_vbmail_bounceflag', $onoff);
}
This fixed the issue for such boards.

If I run into other issues, I'll keep reporting.

And once again, thanks for the great hack and efforts put into it!
Reply With Quote
  #104  
Old 11-11-2011, 10:04 AM
DragonByte Tech's Avatar
DragonByte Tech DragonByte Tech is offline
 
Join Date: Feb 2010
Location: Scotland
Posts: 8,814
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Logician View Post
Firstly thanks for the great hack. It is well written, has a clean code and from checking the source code, I can confirm that a lot of work is put into the project so frankly speaking I believe it is not appreciated enough. So I wanted to tell my appreciation for your work first! :-)
Thank you! You're actually the first person (outside the DBTech team ) that's complimented me on my code quality, so it really means a lot

Quote:
Originally Posted by Logician View Post
ISSUE 1:

[...]

I think it might be a good idea to:
1- Add a hack setting to enter custom parameters there. Alternatively you can make "IMAP Port" setting inputbox "string", instead of "number" which will then allow entering values like: 143/novalidate-cert
I presume there's no downside to adding novalidate-cert for everyone? Surely no servers can be set up to hard reject a connection that tries to skip certificate validation as opposed to simply ignoring that directive... Thinking out loud here. I'd prefer to have it working without requiring admins to edit the port like that

I've added the novalidate-cert and the imap_last_error() to the file and it'll be updated with the next version

Quote:
Originally Posted by Logician View Post
ISSUE 2:

In dbtech /vbmail/cron/threshold.php, this part:
[...]

Otherwise email part in the user pm is blank.
Whoops xD

Quote:
Originally Posted by Logician View Post
ISSUE 3:

The hack is not unflagging user if vb option "verifyemail" is turned off since you tied unflagging only to register.php user activation screen.
And this is the kicker that requires a new version number as opposed to a hotfix xD

I'll release it later tonight alongside a vBActivity & Awards update, thanks


Fillip
Reply With Quote
  #105  
Old 11-14-2011, 09:37 AM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've been reported that sometimes this error shows up for admin:
PHP Code:
Fatal error:  Class 'VBMAIL' not found in /home/..../public_html/forum/dbtech/vbmail/hooks/mail_send.php on line 10 
I traced it a little and noticed it could only happen during vb cron mailing. You include the class in "global_bootstrap_init_complete" hook so it should be there in all page visits but there must be a vb section which triggers vb mail cron for admin visitor without initializing "global_bootstrap_init_complete" hook to produce this error. I'm still working on it to find where but wanted to report here in case you also have an idea.
Reply With Quote
  #106  
Old 11-14-2011, 02:17 PM
DragonByte Tech's Avatar
DragonByte Tech DragonByte Tech is offline
 
Join Date: Feb 2010
Location: Scotland
Posts: 8,814
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

My guess is that the Cron doesn't use vB's bootstrap to initialise. Since cron mailing don't need vBMail stuff anyway, I'll edit the mail_send hook with this
PHP Code:
    if (class_exists('VBMAIL') AND VBMAIL::$pluginglobals['mailinglist']) 
That should work


Fillip
Reply With Quote
  #107  
Old 11-14-2011, 02:47 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by DragonByte Tech View Post
My guess is that the Cron doesn't use vB's bootstrap to initialise. Since cron mailing don't need vBMail stuff anyway, I'll edit the mail_send hook with this
PHP Code:
    if (class_exists('VBMAIL') AND VBMAIL::$pluginglobals['mailinglist']) 
That should work
Why doesn't cron mailing need vbmail stuff? Daily/weekly digest, birthday greetings, event reminder are performed via cron. Actually so is ALL mailing process if "Use Mailqueue System" setting is turned on in vb. Am I missing something?
Reply With Quote
  #108  
Old 11-14-2011, 02:54 PM
DragonByte Tech's Avatar
DragonByte Tech DragonByte Tech is offline
 
Join Date: Feb 2010
Location: Scotland
Posts: 8,814
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Because bounced mail collection is not strictly dependent on anything in that hook, the headers simply help it identify the source

Not to mention anything within that if condition I posted is only supposed to happen on vBMail's own pages anyway


Fillip
Reply With Quote
  #109  
Old 11-14-2011, 03:05 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by DragonByte Tech View Post
Because bounced mail collection is not strictly dependent on anything in that hook, the headers simply help it identify the source

Not to mention anything within that if condition I posted is only supposed to happen on vBMail's own pages anyway
Yes collecting is not needing that hook but I assumed email sending depended on that since it needs to check if bounce flag is for the TO: user on. But I guess I'm safe to assume this class is not needed during that process, right?
Reply With Quote
  #110  
Old 11-14-2011, 03:33 PM
DragonByte Tech's Avatar
DragonByte Tech DragonByte Tech is offline
 
Join Date: Feb 2010
Location: Scotland
Posts: 8,814
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Correct


Fillip
Reply With Quote
  #111  
Old 11-14-2011, 05:56 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ok thanks!

And one more issue I pulled from PHP error log: When threshold.php runs on cron, it is producing "PHP Fatal error: Call to undefined function print_cp_message() in /home/.../public_html/forum/includes/class_dm.php on line 1092"

When I run the cron in scheduled tasks, it does not produce the error so I believe it only happens when it runs on its own.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 06:16 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.07749 seconds
  • Memory Usage 2,415KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (8)bbcode_php
  • (7)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (10)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (2)postbit_attachment
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete