I've done some minor changes in
procpost.php so that you can post messages from any e-mail account by using user name and password in subject line like this:
[thread-123-user-password]
reason for that is to be able to send posts from mobile phones, airplanes etc.
not sure about security holes yet
PHP Code:
/* Get needed data from headers */
if (preg_match('#\[post-([0-9]+)-([a-z0-9]+)-([a-z0-9]+)\]#i', $headers['subject'], $subjectparts)) {
$postid = intval($subjectparts[1]);
} else {
preg_match('#\[thread-([0-9]+)-([a-z0-9]+)-([a-z0-9]+)\]#i', $headers['subject'], $subjectparts);
$threadid = intval($subjectparts[1]);
}
preg_match('#([-.a-z0-9_]+@[-.a-z0-9_)]*)#i', $headers['from'], $emailparts);
/* Move data to new variables */
$email = $emailparts[1];
$emailuser = $subjectparts[2];
$emailcode = $subjectparts[3];
$title = str_replace('[thread-'.$threadid.'-'.$emailuser.'-'.$emailcode.']', '', str_replace('[post-'.$postid.'-'.$emailuser.'-'.$emailcode.']', '', $headers['subject']));
$message = trim(str_replace('[thread-'.$threadid.'-'.$emailuser.'-'.$emailcode.']', '', str_replace('[post-'.$postid.'-'.$emailuser.'-'.$emailcode.']', '', $d_message['text'][0])));
/* Get the user info by the email */
$bbuserinfo = $DB_site->query_first("
SELECT user.*, userfield.field'.$_config['fieldid'].'
FROM user
LEFT JOIN userfield USING (userid)
WHERE username = '$emailuser'
");
/* And make sure it's not a phoney */
if (!$bbuserinfo) {
mailerror('Invalid user: user name does not exist.');
continue;
} elseif (empty($bbuserinfo['field'.$_config['fieldid']])) {
mailerror('No email password: you did not specify an email password in your profile, and cannot post through email.');
continue;
} elseif ($bbuserinfo['field'.$_config['fieldid']] != $emailcode) {
mailerror('Invalid email password: the email password you specifed does not match the one in the database.');
continue;
}
obviously you will have to edit templates and insert $emailuser where ever it needs to. ($emailuser is user name)