vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Modification Requests/Questions (Unpaid) (https://vborg.vbsupport.ru/forumdisplay.php?f=112)
-   -   Email to post (https://vborg.vbsupport.ru/showthread.php?t=318396)

tomshawk 04-24-2015 03:18 AM

Email to post
 
Hello,

I would love to have someone be able to send an email to an address that I assign.

When the email is received, a post is created in a thread I designate.

Is that possible?

QSTR 05-09-2015 05:45 PM

Yes it is.

PHP with pop3/imap client for the e-mail account + vB cron job + datamanager.

--------------- Added [DATE]1431204794[/DATE] at [TIME]1431204794[/TIME] ---------------

Setup email account.
Set user/forum/thread ids.

Later put the code into some file - lets call it 'email2post.php', upload to the main vB directory.
When all will be done, send a test email to your mailbox and run the script from a browser.

I tested it under vB 4.2.2.

Treat this script as example, fix it as you need. Do not use it in public,

PHP Code:

<?php
    
// simple email2post
    // fix it as you need

    // QSTR - 09.05.2015r1
    // https://vborg.vbsupport.ru/showthread.php?t=318396
    // GPL - http://www.gnu.org/copyleft/gpl.html

    
require_once('./global.php');
    require_once(
DIR '/includes/functions_databuild.php');

    
// configure as you need
    // http://php.net/manual/en/function.imap-open.php
    
$imap imap_open("{localhost:995/pop3/ssl/novalidate-cert}INBOX""mailUser""mailPass");

    
// user id used for posting
    
$post_user_id 1234;

    
// forum id
    
$post_forum_id 1;

    
// thread id
    
$post_thread_id 5678;

    
#######################################################################################################################

    // add post, simple
    
function add_post($userid$post$forumid$threadid$timestamp)
    {
        global 
$vbulletin;

        
// setup datamanager
        
$tdm =& datamanager_init('Post'$vbulletinERRTYPE_ARRAY'threadpost');
        
$tdm->set('userid'$userid);
        
$tdm->set('pagetext'$post);
        
$tdm->set('allowsmilie'1);
        
$tdm->set('visible'1);
        
$tdm->set('threadid'$threadid);
        
$tdm->set('dateline'$timestamp);

        
// try to save the post
        
$tdm->pre_save();

        
// check for errors 
        
if (empty($tdm->errors))
        {
            
$post_id $tdm->save();

            
// rebuild counters
            
build_thread_counters($threadid);
            
build_forum_counters($forumid);

            return 
$post_id;
        } else {
            return 
false;
        }
    }

    
// connection ok?
    
if ($imap
    {
        
// count the messages in the mailbox
        
$mails_count imap_num_msg($imap);

        
// if we got some
        
if($mails_count 0
        {
            
// each mail
            
for ($mail_id 1$mail_id <= $mails_count$mail_id++)
            {
                
// mail body
                
$mail_body imap_qprint(imap_body($imap$mail_id));
    
                
// some info
                
echo $mail_id ". <pre>" $mail_body "</pre><br><b>post id: ";
                echo 
add_post($post_user_id$mail_body$post_forum_id$post_thread_idtime());
                echo 
"</b><br><hr><br>";

                
// mark for deletion
                
imap_delete($imap$mail_id);
            }
        } else {
            echo 
"empty mailbox";
        }

        
// delete marked messages, close imap
        
imap_expunge($imap);
        
imap_close($imap);
    } 
?>


tomshawk 05-12-2015 03:40 PM

Awesome, sorry I'm so late on this but Thank you very much.

I will try this as soon as I can

tomshawk 05-17-2015 12:59 PM

Sorry to bother you but.

I finally had a chance to test this.
When I run the file manually the data shows up in the web browser and the email deletes from the server as expected but the data does not get posted to the forum/thread as hoped.

I put in the userid, the threadid and the forumid it just does not post.

No errors BTW
Any ideas?

QSTR 05-17-2015 02:05 PM

1 Attachment(s)
Hey,

No problem.
Did you get any post ID?

Attachment 152496

tomshawk 05-17-2015 04:54 PM

Yes, I got a post ID

This is the output when running the php file

1.

Test1
Test2
Test3

post id: 3420

But it is not appearing in the forum


--------------- Added [DATE]1431888963[/DATE] at [TIME]1431888963[/TIME] ---------------

Interestingly I thought it would show the subject title as well as Body but I can work with this.

Thank you very much

QSTR 05-17-2015 05:10 PM

Hmm.
Weird. You got post ID so... whole vB mechanism is working.
I did couple tests on vB 4.2.2 and it worked like a charm.

Please check your IDs twice.
I will think about it.

tomshawk 05-17-2015 05:27 PM

Quote:

Originally Posted by QSTR (Post 2545714)
Hmm.
Weird. You got post ID so... whole vB mechanism is working.
I did couple tests on vB 4.2.2 and it worked like a charm.

Please check your IDs twice.
I will think about it.

Ugh, You were right, I typed to fast and goofed on the ThreadID

It's working perfectly

You rock

thank you very much

QSTR 05-17-2015 05:49 PM

Hehe. Enjoy!

Here is the version with mail subject to post title.
No subject, no title.

Should work for iso-8859-1 etc.
For UTF-8 you will have to make some tweaks.

PHP Code:

<?php
    
// simple email2post
    // fix it as you need

    // QSTR - 17.05.2015r1
    // https://vborg.vbsupport.ru/showthread.php?t=318396
    // GPL - http://www.gnu.org/copyleft/gpl.html

    
require_once('./global.php');
    require_once(
DIR '/includes/functions_databuild.php');

    
// configure as you need
    // http://php.net/manual/en/function.imap-open.php
    
$imap imap_open("{localhost:995/pop3/ssl/novalidate-cert}INBOX""user""pass");

    
// user id used for posting
    
$post_user_id 1234;

    
// forum id
    
$post_forum_id 1;

    
// thread id
    
$post_thread_id 1;

    
#######################################################################################################################

    // add post, simple
    
function add_post($userid$post$post_title$forumid$threadid$timestamp)
    {
        global 
$vbulletin;

        
// setup datamanager
        
$tdm =& datamanager_init('Post'$vbulletinERRTYPE_ARRAY'threadpost');
        
$tdm->set('userid'$userid);
        
$tdm->set('pagetext'$post);
        
$tdm->set('allowsmilie'1);
        
$tdm->set('visible'1);
        
$tdm->set('threadid'$threadid);
        
$tdm->set('dateline'$timestamp);

        
// if set
        
if ($post_title && trim($post_title) != "")
        {
            
$tdm->set('title'$post_title);
        }

        
// try to save the post
        
$tdm->pre_save();

        
// check for errors 
        
if (empty($tdm->errors))
        {
            
$post_id $tdm->save();

            
// rebuild counters
            
build_thread_counters($threadid);
            
build_forum_counters($forumid);

            return 
$post_id;
        } else {
            return 
false;
        }
    }

    
// connection ok?
    
if ($imap
    {
        
// count the messages in the mailbox
        
$mails_count imap_num_msg($imap);

        
// if we got some
        
if($mails_count 0
        {
            
// each mail
            
for ($mail_id 1$mail_id <= $mails_count$mail_id++)
            {
                
// mail header
                
$mail_header imap_headerinfo($imap$mail_id);
            
                
// mail body
                
$mail_body imap_qprint(imap_body($imap$mail_id));

                
// mail subject
                
$mail_subject $mail_header->subject;
    
                
// some info
                
echo $mail_id ".<br>";
                echo 
"subject: " $mail_subject "<br>";
                echo 
"mail body: " "<br><pre>" $mail_body "</pre><br><b>post id: ";
                echo 
add_post($post_user_id$mail_body$mail_subject$post_forum_id$post_thread_idtime());
                echo 
"</b><br><hr><br>";

                
// mark for deletion
                
imap_delete($imap$mail_id);
            }
        } else {
            echo 
"empty mailbox";
        }

        
// delete marked messages, close imap
        
imap_expunge($imap);
        
imap_close($imap);
    } 
?>


tomshawk 05-18-2015 04:14 AM

Sweet, thanks again and thanks for the updated code. Awesome!


All times are GMT. The time now is 02:52 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01275 seconds
  • Memory Usage 1,805KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete