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', $vbulletin, ERRTYPE_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_id, time());
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);
}
?>