mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-06 23:39:06 +00:00
updates to the mail_handler
This commit is contained in:
parent
6b4deea068
commit
784fd5ecea
2 changed files with 293 additions and 239 deletions
|
@ -1,6 +1,45 @@
|
|||
<?php
|
||||
|
||||
class Mail_Handler{
|
||||
|
||||
private $db;
|
||||
|
||||
function mail_fork() {
|
||||
/*global $db;
|
||||
$db = NULL;
|
||||
$pid = pcntl_fork();
|
||||
oms_db_connect();
|
||||
return $pid;*/
|
||||
$this->db = new DBLayer("lib");
|
||||
//Start a new thread and return the thread id!
|
||||
$pid = pcntl_fork();
|
||||
return $pid;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
function oms_db_connect() {
|
||||
global $db;
|
||||
global $db_host, $db_name, $db_user, $db_pass;
|
||||
if(!isset($db)) {
|
||||
try {
|
||||
$db = new PDO(
|
||||
"mysql:host=$db_host;dbname=$db_name",
|
||||
$db_user,
|
||||
$db_pass,
|
||||
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
|
||||
);
|
||||
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
//$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
||||
oms_error_log("oms_db_connect: database connection established", 3);
|
||||
} catch(PDOException $e) {
|
||||
print "Database error: " . $e->getMessage() . "<br/>";
|
||||
die();
|
||||
}
|
||||
} else {
|
||||
oms_error_log("oms_db_connect: already connected");
|
||||
}
|
||||
}*/
|
||||
|
||||
function oms_mail_send($recipient, $subject, $body, $from = NULL) {
|
||||
|
||||
|
@ -13,21 +52,22 @@ function oms_mail_send($recipient, $subject, $body, $from = NULL) {
|
|||
|
||||
|
||||
|
||||
function oms_mail_cron() {
|
||||
|
||||
$oms_inbox_username = '123';
|
||||
$oms_inbox_password = '456';
|
||||
$oms_host = 'test.com';
|
||||
$oms_reply_to = "OMS <oms@".$oms_host.">";
|
||||
function mail_cron() {
|
||||
global $cfg;
|
||||
$inbox_username = $cfg['mail']['username'];
|
||||
$inbox_password = $cfg['mail']['password'];
|
||||
$inbox_host = $cfg['mail']['host'];
|
||||
$oms_reply_to = "OMS <oms@".$inbox_host.">";
|
||||
global $basedir;
|
||||
|
||||
// Deliver new mail
|
||||
echo("mail cron\n");
|
||||
|
||||
//TO ASK:
|
||||
$pid = oms_fork();
|
||||
$pid = mail_fork();
|
||||
$pidfile = '/tmp/oms_cron_email_pid';
|
||||
|
||||
//if process is running, then we are already cronning
|
||||
if($pid) {
|
||||
|
||||
// We're the main process.
|
||||
|
@ -40,6 +80,8 @@ function oms_mail_cron() {
|
|||
$file = fopen($pidfile, 'w');
|
||||
fwrite($file, $pid);
|
||||
fclose($file);
|
||||
|
||||
//select all new & failed emails & try to send them
|
||||
$emails = db_query("select * from email where status = 'NEW' or status = 'FAILED'");
|
||||
|
||||
foreach($emails as $email) {
|
||||
|
@ -51,7 +93,7 @@ function oms_mail_cron() {
|
|||
|
||||
if($email['sender']) {
|
||||
$username = oms_get_username_from_id($email['sender']);
|
||||
$from = "$username <$username@$oms_host>";
|
||||
$from = "$username <$username@$inbox_host>";
|
||||
} else {
|
||||
$from = $oms_reply_to;
|
||||
}
|
||||
|
@ -64,14 +106,15 @@ function oms_mail_cron() {
|
|||
$status = "FAILED";
|
||||
echo("Email to {$email['recipient']} failed\n");
|
||||
}
|
||||
//change the status of the emails.
|
||||
db_exec('update email set status = ?, message_id = ?, attempts = attempts + 1 where id_email = ?', array($status, $message_id, $email['id_email']));
|
||||
}
|
||||
unlink($pidfile);
|
||||
}
|
||||
// Check mail
|
||||
|
||||
//$mailbox = imap_open("{localhost:110/pop3/novalidate-cert}INBOX", $oms_inbox_username, $oms_inbox_password);
|
||||
$mbox = imap_open("{localhost:110/pop3/novalidate-cert}INBOX", $oms_inbox_username, $oms_inbox_password);
|
||||
//$mailbox = imap_open("{localhost:110/pop3/novalidate-cert}INBOX", $inbox_username, $inbox_password);
|
||||
$mbox = imap_open($cfg['mail']['server'], $inbox_username, $inbox_password);
|
||||
$message_count = imap_num_msg($mbox);
|
||||
|
||||
for ($i = 1; $i <= $message_count; ++$i) {
|
||||
|
@ -249,4 +292,4 @@ function get_part($stream, $msg_number, $mime_type, $structure = false, $part_nu
|
|||
|
||||
} // END OF FUNCTION
|
||||
|
||||
|
||||
}
|
|
@ -35,6 +35,17 @@ $cfg['mail']['username'] = '123';
|
|||
$cfg['mail']['password'] = '456';
|
||||
$cfg['mail']['host'] = 'test.com';
|
||||
|
||||
// To connect to an IMAP server running on port 143 on the local machine,
|
||||
// do the following: $mbox = imap_open("{localhost:143}INBOX", "user_id", "password");
|
||||
// POP3 server on port 110: $mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");
|
||||
// SSL IMAP or POP3 server, add /ssl after the protocol: $mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");
|
||||
// To connect to an SSL IMAP or POP3 server with a self-signed certificate,
|
||||
// add /ssl/novalidate-cert after the protocol specification:
|
||||
// $mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");
|
||||
// NNTP server on port 119 use: $nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");
|
||||
// To connect to a remote server replace "localhost" with the name or the IP address of the server you want to connect to.
|
||||
$cfg['mail']['server'] = '{localhost:110/pop3/novalidate-cert}INBOX';
|
||||
|
||||
//-----------------------------------------------------------------------------------------
|
||||
// If true= the server will add automatically unknown user in the database
|
||||
// (in nel.user= nel.permission= ring.ring_user and ring.characters
|
||||
|
|
Loading…
Reference in a new issue