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

Reply
 
Thread Tools
vBulletin Mail System Details »»
vBulletin Mail System
Version: 2.5.2p, by filburt1 filburt1 is offline
Developer Last Online: May 2007 Show Printable Version Email this Page

Version: 3.5.4 Rating:
Released: 09-04-2006 Last Update: Never Installs: 47
DB Changes Uses Plugins Template Edits
Additional Files Is in Beta Stage  
No support by the author.

[high]BEFORE YOU READ FURTHER, DO NOT INSTALL THIS MODIFICATION IN ITS PRESENT STATE. READ THE RELEVANT SECTIONS OF THIS POST FIRST IF YOU WISH TO INSTALL VBMS. I AM NOT OFFICIALLY SUPPORTING THIS MODIFICATION.[/high]

Note: For now, this thread will serve for all support questions. Obviously, the thread is going to get very long, very soon, and quickly lose any manageability. I hope to have a Premum Modification forum set up for vBMS, depending on whether the administration here supports it.

The vBulletin Mail System is now a free modification, instead of $40 to $48 (depending on the license). All features of the developer license (notes, etc.) are public as well. These files will be released shortly; they are not available yet.

For product information: http://www.webdesignforums.net/vbms/ .

What's attached to this thread?

The latest development version of vBMS, designed for 3.5 (incompatible with 3.0 in many ways, incompatible with 3.6 in a handful of ways). It is not to be installed in a live environment under any conditions.

What does this mean?

The forum at http://www.webdesignforums.net/vbms/forum/ will no longer serve as a support forum. If you have questions, you should do one of two things:
  • Post in this thread ONLY. All technical, historical, and nearly all other threads should be posted here. In all likelyhood, I will not response to technical questions in this thread, and I will not respond to such requests via private messages or other means. By posting in this thread, tens of thousands of other users can help you in addition to me (provided they don't get there first and I have the time).
  • If the question is personal for me only--no development questions--then send me a private message. Send the private message only through my site (http://www.webdesignforums.net/), not this site, so I can easily look up your customer history. Effectively, this involves billing only, or other licensing questions.
What about those who purchased the product?

When you bought vBMS, you were paying for the stable 3.0 release that has been around for over a year, and a 2.3.x release that has been around for much longer (since 2003). You still have access to those products (they will be released in the new forum). However, your license has been inherited to a standard open-source license: you may now install vBMS on as many domains and forums as you like, as well as freely distribute it.

Your input has also allowed a stable 3.5 version to be very close to completion. The expertise of the tens of thousands of coders who are now exposed to vBMS--which includes the developers of vBulletin themselves--will further improve the product to create a stable and full-featured product for vBulletin 3.5, 3.6, and beyond.

If your intention was to buy a 3.5 release, please note that it was clearly and repeatedly mentioned that a 3.5 version was only under development, not readily available, and that the version available was specifically not suitable for live use. I apologize if you thought this was different as I attempted to make it abundantly clear, including specifically telling people not to buy vBMS if they are running vBulletin 3.5 or later.

However, with this transition to open source, you will still get what you paid for, and faster: a stable 3.5/3.6 release.

Why go open-source?

To be honest, it is not fair to those who bought a vBMS license but have upgraded their installation of vBulletin to beyond 3.0. This will allow a much faster development cycle with support from many vBulletin modification developers. There are secondary reasons as well:
  • Time. vBMS is well over 16,000 lines of code. Managing a product of that scope is simply beyond the several hours free I have each week to develop the product. Also, with Jelsoft churning out the vBulletin versions, developing a product that is dependent on frequent changes is extremely difficult. That is not to say that frequent new versions of vBulletin is a bad thing; it simply makes development difficult.
  • Product scale. As mentioned above, vBMS is huge--far bigger than the majority of vBMS additions and even bigger than some of the version transitions of vBulletin itself.
  • Reverse engineering vBulletin. As a factor of the two above, I am finding it increasingly difficult to develop for vBulletin. While I applaud Jelsoft for offering a product and specifically not mangling, encrypting, or otherwise prohibiting the viewing of its source (obviously, for customers only), there is still much to be done to favor strongly to developers who build products exclusively for their product. Others who feel catoring towards developers can help Jelsoft can see my request for a "developer license" of vBulletin.
  • Fraud. As many people know, online software vendors are among the worst hit for credit card fraud, and it's extremely damaging: even if a thousand copies of a piece of software are sold, it only takes one single fraudulent order to leak the product, voiding, in all honesty, the majority of future orders. After putting a great deal of time into vBMS to see it stolen so brazenly, it demoralized me.
  • Bad experiences. I have appealed several times to the community to hire additional developers, but the developers I hand-picked did not work out on these occasions. So far, none of the experiences has sped up development time, so paid outside help has not worked out.
  • Personal reasons. I have changed jobs, taken on part-time work (I'm still poor), and even had a death in the family break up my work.
But the ultimate reason: I want vBMS to be available for all current versions of vBulletin so those who paid good money do not feel cheated.

What can and can't I do with an open-source vBMS in terms of licensing?

You can:
  • Distribute vBMS to anybody you like.
  • Modify vBMS to do whatever you like (excluding changing copyright notices), and then claim the changes as your own.
  • Remove mentions of vBMS, the "vBulletin Mail System", or other branding.
  • Develop special distributions of vBMS that you have extensively modified, and distribute those changes as a package
  • Sell any components of vBMS that you have directly created (this is allowed, but discouraged). Only the components themselves may be sold, not the entire package with your modifications included.
You cannot:
  • Advertise any of your modifications that you may be selling at vBulletin.org.
  • Use vBMS for any illegal purposes, including use vBMS on a forum without an active vBulletin license.
  • Modify vBMS to do whatever you like, and then claim the entire product as your own.
  • Remove mentions of vBMS, the "vBulletin Mail System", or other branding, and replace them with others that imply you exclusively developed the product.
  • Sell any components of vBMS that the product originally contained or others have freely developed.
  • Sell the product as a whole, including a modified product.
What technical skills do I need to understand how vBMS works?

You need the usual vBulletin skills in general. This means PHP, MySQL, HTML, and CSS. You also should have a working knowledge of XML.

You'll also need to familiarize yourself with how MIME headers in e-mails work. If you want to modify how vBMS receives and routes mail, you'll need to understand the beast that is the imap library: http://www.php.net/imap . The imap library is only used to receive messages; sending messages has no dependency on imap.

Will you help with development?

I'll offer simple assistance in whatever free time I have--and I'll only do it publicly in the new forum. I will not write extensive parts of code for you or talk to you privately about vBMS. I will enjoy answering questions about how vBMS works at a high-level, and then you can see the inner workings to see how it's actually implemented.

So can vBMS actually be installed?

The version of vBMS that has been uploaded is the latest development version. It can be installed on a test forum, but there are several critical bugs that need to be resolved. You can browse the old support forums (http://www.webdesignforums.net/vbms/) for an overview of those bugs. I have a suspicion that they are simple fixes to you, the community with experience with vBulletin.

What is the first goal of those movement to open-source?

I wish to have a stable version of vBMS with little to no known bugs available for vBulletin 3.5 and 3.6 as soon as possible to appease past and present customers. Feature additions should come later; compatibility and bug fixes should be the utmost priority. When the stable version for 3.5 and 3.6 is available, then new features can be added. At the old forums, there is a list of feature requests, many of which have been addressed.

What will be my role in this?

As a user experienced with vBulletin development, both you and others will benefit from a stable 3.5/3.6 version of vBMS. That should be the priority. Feature additions, visual tweaks, etc. come later. Compatibility and just making it work completely with the features already present is the most important.

What remains to be done for a transition to open-source?

The version of vBMS attached to this thread is the latest one to which customers had access. It is still littered with copyright information and warnings about piracy. While the copyright information is still valid and will perpetually be valid, you can obviously ignore the piracy warnings. A proper version will be uploaded within several days that is fully suitable for open-source use.

Remember, this means that the piracy warning is no longer applicable, but the copyright information is applicable and must never, under any circumstances, be removed.

Any last thoughts?

As with any modification, back up your site files, but more importantly, your database, before proceeding. vBMS makes a significant number of alterations and new tables.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #172  
Old 11-17-2006, 09:25 PM
dodgeboard.com's Avatar
dodgeboard.com dodgeboard.com is offline
 
Join Date: Nov 2005
Posts: 174
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Killsparer View Post
No expert here, but could it not just be a problem with the mail-header? Both mails contain the following (adress edited out):



What i mean is, that the header contains "to" and "subject" twice. Couldn't it cause the double-mails?

This is a good point. Mine are the same; (2) To: lines, (2) subject: lines
Noticing also in the header that the emails are only milliseconds behind each other. Almost like the CC line and the TO lines are getting joined, but creating two TO: lines in the header. ???

Perhaps something in the email header creation is fubar? Dupe table entries?
Reply With Quote
  #173  
Old 11-17-2006, 09:50 PM
dodgeboard.com's Avatar
dodgeboard.com dodgeboard.com is offline
 
Join Date: Nov 2005
Posts: 174
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok, so I think we are onto something here. When I send it with a subject line "this is a subject line"

I get this in the subject line on the preview panel of Outlook;

this is with a subject line this is with a subject line

But when I double click on the email to show it in a seperate window, it only shows one, so Outlook is dealing with the duplicate entry and excluding one of the subject line entries in the header.

So the header duplicating the subject line and duplicating the TO: line is the reason why we get two emails. Now, we need to figure out why the header is being compiled this way for some users and not all of them. I tried a theory; logginginto your forums using cookies and without- both methods resulted in dupe emails.

Lionel, do you have...or can you get...header from one of the users that does not get the dupe emails?
Reply With Quote
  #174  
Old 11-17-2006, 10:00 PM
DaNIEL MeNTED DaNIEL MeNTED is offline
 
Join Date: Sep 2006
Posts: 152
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Technically its the duplication of the TO: line.

With the caveat that I have not looked at the code...

The protocol requires that each recipient be identified individually. When you send an email with 3 people in the "to:" the server actually breaks that down into 3 "RCPT TO: X@X.com" commands that are sent to the server on the other end of the communication... assuming the code it is going to acheive the same thing.
Reply With Quote
  #175  
Old 11-17-2006, 10:19 PM
dodgeboard.com's Avatar
dodgeboard.com dodgeboard.com is offline
 
Join Date: Nov 2005
Posts: 174
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well, look this over Daniel and see if you can spot something that would be causing this.

PHP Code:
function vbms_api_send_message(
        
$to$subject$bbcode$attachments false$xpriority VBMS_XPRIORITY_NORMAL$savecopy true,
        
$addsignature true$reformatsignature true$testonly false$previewtype false$userid 0)
{
    
// prep fields
    
$to trim($to);
    
vbms_adjust_userid($userid);
    
    if (
$attachments === false)
    {
        
$attachments = array();
    }
    
    if (!empty(
$to) and is_array($attachments) and $userid 0)
    {
        global 
$DB_site$bbuserinfo$vboptions$vbulletin;
        
        
// get missing data if not the current user
        
$permissions vbms_get_permissions_by_userid($userid);
        
        
// set priority to normal if no permission
        
if ($xpriority != VBMS_XPRIORITY_NORMAL and !$permissions[VBMS_PERMISSIONS_CAN_USE_PRIORITIES])
        {
            
$xpriority VBMS_XPRIORITY_NORMAL;
        }
        
        
// do attachment permission checks
        
if (!empty($attachments))
        {
            if (!
$permissions[VBMS_PERMISSIONS_CAN_SEND_ATTACHMENTS])
            {
                return 
vbms_api_result::create_fail_instance("vbms_no_attachment_send_permissions");
            }
            else if (
sizeof($attachments) > $permissions[VBMS_PERMISSIONS_MAX_ATTACHMENT_COUNT])
            {
                return 
vbms_api_result::create_fail_instance("vbms_too_many_attachments");
            }
            else if (
$permissions[VBMS_PERMISSIONS_MAX_ATTACHMENT_FILESIZE] > 0)
            {
                
// check bytes used
                
$totalbytes 0;
                foreach (
$attachments as $attachment)
                {
                    
$totalbytes += $attachment['filesize'];
                }
                
                if (
$totalbytes $permissions[VBMS_PERMISSIONS_MAX_ATTACHMENT_FILESIZE])
                {
                    
$given vb_number_format($totalbytes1true);
                    
$allowed vb_number_format($permissions[VBMS_PERMISSIONS_MAX_ATTACHMENT_FILESIZE], 1true);
                    return 
vbms_api_result::create_fail_instance("vbms_attachments_too_large", array($given$allowed));
                }
            }
            
            
// check extensions
            
$allowedexts vbms_get_valid_attachment_extensions();
            foreach (
$attachments as $attachment)
            {
                
$extension file_extension($attachment['filename']);
                
                if (!
in_array($extension$allowedexts))
                {
                    return 
vbms_api_result::create_fail_instance(
                            
"vbms_denied_attachment_extension",
                            array(
vbms_grammatical_implode($allowedexts)));
                }
            }
        }
        
        
// load the signature, if necessary
        
if ($addsignature)
        {
            if (
$userid != $bbuserinfo['userid'])
            {
                
$user $DB_site->query_first(
                        
"SELECT signature
                        FROM " 
TABLE_PREFIX "usertextfield
                        WHERE userid = 
$userid");
                
$signature $user['signature'];
            }
            else
            {
                
$signature $bbuserinfo['signature'];
            }
        }
        
        
// load alias and username, if necessary
        
if ($userid != $bbuserinfo['userid'])
        {
            
$user $DB_site->query_first(
                    
"SELECT username, vbms_alias
                    FROM " 
TABLE_PREFIX "user
                    WHERE userid = 
$userid");
        }
        else
        {
            
$user $bbuserinfo;
        }
        
        
$to vbms_converttos($to);
        
        
// -----------------------------------------------------------------------
        // construct a mail object and send it
        // -----------------------------------------------------------------------
        
        // construct
        
$object = new vbms_mail_message();
        
        
// set fields
        
$object->set_subject($subject);
        
$object->set_from($user['vbms_alias'], $user['username']);
        
$object->set_message_bbcode($bbcode);
        
$object->set_recipients($to);
        
$object->set_xpriority($xpriority);
        
        
// apply signature/trailer options
        
$object->apply_options($signature$rewritesignature,
                
$permissions[VBMS_PERMISSIONS_REQUIRE_TRAILER],
                
$permissions[VBMS_PERMISSIONS_ABUSE_LEADER]);
        
        
// add attachments
        
foreach ($attachments as $attachment)
        {
            
$object->add_attachment(
                    
$attachment['filename'], $attachment['data'],
                    
$attachment['mimetype']);
        }
        
        if (
$previewtype !== false)
        {
            global 
$vbphrase$stylevar;
            
            
$html $object->construct_message_html($previewtype);
            
            
print_output($html);
            return 
vbms_api_result::get_void_success_instance();
        }
        else
        {
            
// send it
            
$result $object->send($testonly);
            if (
$result !== true)
            {
                return 
vbms_api_result::create_fail_instance("vbms_senderror",
                        array(
trim($result)));
            }
            else
            {
                
// update floodcheck dateline
                
if ($permissions[VBMS_PERMISSIONS_SEND_FLOODCHECK] > 0)
                {
                    
$vbulletin->db->query(
                            
"REPLACE INTO " TABLE_PREFIX "vbms_sendfloodcheck
                            (userid, dateline)
                            VALUES
                            (
$userid, " TIMENOW ")");
                }
                
                
// add to sent messages (and increment quota)
                
if ($savecopy)
                {
                    
$bytes sizeof($bbcode);
                    
$bbcode addslashes($bbcode);
                    
                    
$from addslashes("\"" $user['username'] . "\" <" .
                            
$user['vbms_alias'] . "@" .
                            
$vboptions['vbms_todomain'] . ">");
                    
$subject addslashes($subject);
                    
$message addslashes($bbcode);
                    
$messageid vbms_get_first_available_messageid();
                    
$DB_site->query(
                            
"INSERT INTO " TABLE_PREFIX "vbms_message
                            (messageid, format, userid, folderid, xpriority,
                            dateline, readflag, fromname, subject, message)
                            VALUES
                            (
$messageid, \"bbcode\", $userid, " .
                            
VBMS_FOLDER_SENTMESSAGES ", $xpriority,
                            " 
TIMENOW ", 1, \"$from\", \"$subject\",
                            \"
$message\")");
                    
vbms_api_adjust_quota_usage($bytes$userid);
                }
                
                return 
vbms_api_result::get_void_success_instance();
            }
        }
    }
    else
    {
        return 
vbms_api_result::get_invalid_arguments_instance();
    }

Reply With Quote
  #176  
Old 11-17-2006, 11:00 PM
dodgeboard.com's Avatar
dodgeboard.com dodgeboard.com is offline
 
Join Date: Nov 2005
Posts: 174
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

POP accounts seem to be handling the dupe subject line issue better than IMAP like hotmail.

subject line on sent message: testing things out

Hot mail shows: testing things out testing things out

POP accounts show: testing things out
Reply With Quote
  #177  
Old 11-17-2006, 11:03 PM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

interesting. I have only one subject line every time, but the email shows the to as
Quote:
recipient@email.com;recipient@email.com
thus the double emails.

I'll take a closer look at function vbms_api_send_message()
Reply With Quote
  #178  
Old 11-17-2006, 11:35 PM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I have been debugging every step of the send process and at every instance it echo only one email address on the screen.
Reply With Quote
  #179  
Old 11-17-2006, 11:49 PM
DaNIEL MeNTED DaNIEL MeNTED is offline
 
Join Date: Sep 2006
Posts: 152
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by dodgeboard.com View Post
Well, look this over Daniel and see if you can spot something that would be causing this.

PHP Code:
        $to vbms_converttos($to); 
Not sure what that function is doing...

But bear in mind I'm not a coder... just a bit of a M$ mailserver guru.

The duplicated subject line isn't the issue... the duplicated mail address is...
Reply With Quote
  #180  
Old 11-17-2006, 11:51 PM
dodgeboard.com's Avatar
dodgeboard.com dodgeboard.com is offline
 
Join Date: Nov 2005
Posts: 174
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Agreed! But the fact that both are getting duplicated may give us a better idea of where to look in the code.

I am not a coder either, but a guru of all sorts.
Reply With Quote
  #181  
Old 11-17-2006, 11:54 PM
DaNIEL MeNTED DaNIEL MeNTED is offline
 
Join Date: Sep 2006
Posts: 152
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

how is $to being built?
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 01:50 AM.


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.05518 seconds
  • Memory Usage 2,418KB
  • Queries Executed 25 (?)
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
  • (2)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (2)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (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
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete