Χρονοπρογραμματισμος αποστολής mail

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
gchar
Δημοσιεύσεις: 32
Εγγραφή: 30 Αύγ 2008 18:19

Χρονοπρογραμματισμος αποστολής mail

Δημοσίευση από gchar » 10 Φεβ 2009 02:02

Καλησπέρα σε όλους σας,

Εχω το εξής πρόβλημα,έχω φτιάξει ένα php script το οποίο θα σηκώνετε με κάποιο service και θα τραβάει κάποια στοιχεία από έναν πίνακα και θα τρέχει ένα άλλο php script στο background (για κάθε εγγραφή στον πίνακα) το οποίο θα πραγματοποιεί την αποστολή ενός mail. Ο server που είναι στημένη η εφαρμογή έχει windows os και η εντολή που χρησιμοποιώ για να τρέξω το δεύτερο script είναι η exec. Το πρόβλημα είναι ότι αν τρέξω το δεύτερο script από μόνο του τότε στέλνει το Mail κανονικά, αν το τρέξω με την exec τότε δεν στέλνει το Mail.Να προσθέσω ότι χρησιμοποιώ την Phpmailer για την αποστολή του mail. Ο κώδικας για το πρώτο script είναι:

Κώδικας: Επιλογή όλων

<?php
include_once&#40;'config2.php'&#41;;

$stat=array_flip&#40;$STATUS_CONF&#41;;

$db=pg_connect&#40;"host=".$DB_CONF&#91;'host'&#93;." dbname=".$DB_CONF&#91;'database'&#93;." user=".$DB_CONF&#91;'login'&#93;." password=".$DB_CONF&#91;'password'&#93;&#41;;

$today=date&#40;'Y-m-d H&#58;i&#58;s'&#41;;

$query='select id,arguments,type,status_descr,output,status from tasks where &#40;status='.$stat&#91;'pending'&#93;.'or status='.$stat&#91;'submitted'&#93;."&#41; and execdate<='$today'";

$result=pg_query&#40;$db,$query&#41;;

while&#40;$row = pg_fetch_assoc&#40;$result&#41;&#41;&#123;
	$id=$row&#91;'id'&#93;;
	$type=$row&#91;'type'&#93;;
	$status_descr=$row&#91;'status_descr'&#93;;
	$output=$row&#91;'output'&#93;;
	$status=$row&#91;'status'&#93;;
	$arguments=explode&#40;"WQFDCZGVAWFDCVZBGDZSFVCZXVsdf",$row&#91;'arguments'&#93;&#41;;
	$args="";
	foreach&#40;$arguments as $arg&#41;
	$args.='"'.$arg.'" ';
	$output=null;
	$date=date&#40;'Y-m-d H&#58;i&#58;s'&#41;;
	$query='update tasks set status='.$stat&#91;'running'&#93;.',statupdate=\''.$date.'\' where id='.$id;
	if&#40;pg_query&#40;$db,$query&#41;&#41;&#123;
		exec&#40;'php '.$SCRIPT_CONFIG&#91;$type&#93;.' '.trim&#40;$args&#41; , $output&#41;;
		$output=implode&#40;"\n",$output&#41;;
		$executed=true;

		if&#40;preg_match&#40;'/^&#40;.*&#41;-&#40;.*&#41;/',$output,$matches&#41;&#41;&#123;
			$OK_NOK=trim&#40;$matches&#91;1&#93;&#41;;
			if&#40;$OK_NOK=='OK'&#41;&#123;
				$status=$stat&#91;'completed'&#93;;
				$status_descr='completed';
			&#125;
			else&#123;
				$status=$stat&#91;'pending'&#93;;
				$status_descr='pending';
			&#125;
		&#125;

		$date=date&#40;'Y-m-d H&#58;i&#58;s'&#41;;
		$query='update tasks set status='.$status.",status_descr='$status_descr',output='$output',rundate='$date',statupdate='$date',execcount=execcount+1 where id=$id";


		pg_query&#40;$db,$query&#41;;
	&#125;
&#125;

pg_close&#40;$db&#41;;


?>

και το script για την αποστολή mail είναι&#58;

<?php
include&#40;"class.phpmailer.php"&#41;;

//$message=implode&#40;',',array_slice&#40;$argv,1&#41;&#41;;

//$emails=implode&#40;',',$message&#91;1&#93;&#41;;

$mail = new PHPMailer&#40;&#41;;

$mail->IsSMTP&#40;&#41;;                           // set mailer to use SMTP
$mail->SMTPAuth   = true;                  // enable SMTP authentication

//gmail
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // set the SMTP port for the GMAIL server
$mail->Username   = "********@gmail.com";  // GMAIL username
$mail->Password   = "********";            // GMAIL password
$mail->From = "********@gmail.com";//$message&#91;0&#93;;//

$mail->FromName = "Administrator";
//for &#40;$i=0;$i=$emails.length&#40;&#41;,$i++&#41;
//&#123;
	$mail->AddAddress&#40;"********@yahoo.gr"&#41;;//$emails&#91;$i&#93;&#41;;//
//&#125;

$mail->IsHTML&#40;true&#41;;                                  // set email format to HTML

$mail->Subject = "test";//$message&#91;2&#93;;//
$mail->Body    = "test"; //$message&#91;3&#93;;//
// $mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if&#40;!$mail->Send&#40;&#41;&#41;
&#123;
    echo "NOK\n";
&#125;
else 
&#123;  
    echo "OK\n";
&#125; 
?>
κάθε πρόταση για βοήθεια είναι δεκτή!!!Ευχαριστώ πολύ.......

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6230
Εγγραφή: 30 Νοέμ 2004 03:09

Χρονοπρογραμματισμος αποστολής mail

Δημοσίευση από fafos » 10 Φεβ 2009 03:05

mathete na vazete ton kodika se bbcode re seis... mas stravosate..

einai sigoura php h diadromh tou exec?

trekse auto ston server sou gia na deis thn diadromh ths php:

Κώδικας: Επιλογή όλων

<? 

$cmd = "which php";

exec&#40;"$cmd 2>&1", $output&#41;;
    foreach &#40;$output as $outputline&#41; &#123;
    &#125;

$path_to_php =  $outputline;

echo $path_to_php;
?>
an einai diaforetiko apo php (synhthos /usr/local/bin/php) allakse to sto:

exec('php '.$SCRIPT_CONFIG[$type].' '.trim($args) , $output);


an synexizei na mhn douleuei dokimase na trekseis to bakground me curl:

exec("curl -G http://www.mysite.com/arxeio.php > /dev/null &");
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

gchar
Δημοσιεύσεις: 32
Εγγραφή: 30 Αύγ 2008 18:19

Χρονοπρογραμματισμος αποστολής mail

Δημοσίευση από gchar » 12 Φεβ 2009 11:58

Ευχαριστώ πολύ fafos για την άμμεση απάντηση σου! Με βοήθησε πάρα πολύ. Έχω όμως άλλη μια ερώτηση (ξέρω γίνομαι σπαστικός, σορρυ).
Για το κείμενο του mail χρησιμοποιώ το tinyMCE και τον τίτλο του τον πέρνω από ένα text box.
Αυτά τα περνάω σαν παραμέτρους στην phpmailer πυ αναφέρω παραπάνω μέσω του παακάτω κώδικα:

Κώδικας: Επιλογή όλων

 $mail->Subject = $arguments&#91;2&#93;;
	$mail->MsgHTML&#40;$arguments&#91;3&#93;&#41;;
όπου $arguments[2] η τιμή του text πεδίου και $arguments[3] το κείμενο του tinyMCE που πέρνω με την μέθοδο:

Κώδικας: Επιλογή όλων

document.getElementById&#40;'con'&#41;.value=tinyMCE.get&#40;'work_content'&#41;.getContent&#40;&#41;;
Το πρόβλημα έιναι ότι στο mail που αποστέλεται ο Τίτλος του mail δεν εμφανίζει τα Ελληνικά σωστά και στο κείμενο του Mail όταν η Ελληνική λέξη περιέχει τόνο το γράμμα που περιέχει τον τονο το εμφανίζει με περίεργους χαρακτήρες.

Υπάρχει κάποια λύση????

Ευχαριστώ πολύ εκ των προτέρων για την βοηθειά σας!
Τελευταία επεξεργασία από το μέλος gchar την 12 Φεβ 2009 13:33, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

Χρονοπρογραμματισμος αποστολής mail

Δημοσίευση από EneMe » 12 Φεβ 2009 13:06

Έφτιαξα το πρώτο μήνυμα με το code tag.

Παρακαλώ όταν δίνετε κώδικα να χρησιμοποιείτε αυτό το tag [το κουμπάκι code πάνω από την περιοχή κειμένου στην απάντηση] για να είναι πιο ευανάγνωστο.
Εκτός αυτού πιθανά urls ή άλλα στοιχεία παραμένουν ανενεργά μέσα στο code tag.

Ευχαριστώ!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6230
Εγγραφή: 30 Νοέμ 2004 03:09

Χρονοπρογραμματισμος αποστολής mail

Δημοσίευση από fafos » 12 Φεβ 2009 14:01

sto class.phpmailer.php ti encoding xrhsimopoieis? h kalyteros methodos einai na xrhsimopoieis pantou UTF-8...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

gchar
Δημοσιεύσεις: 32
Εγγραφή: 30 Αύγ 2008 18:19

Χρονοπρογραμματισμος αποστολής mail

Δημοσίευση από gchar » 12 Φεβ 2009 15:07

Φίλε μου ευχαριστώ παρά πάρα πάρα πολύ πρώτων για το ενδιαφέρον σου και δεύτερων για την λύση που μου έδωσες.Είχες δίκιο αυτό έφταιγε!!!!

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες