Cron, php en mail()

Status
Niet open voor verdere reacties.

Cyroq

Gebruiker
Lid geworden
7 apr 2009
Berichten
180
Hoi allemaal,

Op mijn website laat ik via CPanel een php bestandje elk half uur draaien middels een cron job. Dit werkt prima, maar op een of andere manier wordt de mail() functie niet uitgevoerd. Als ik het script handmatig draai wordt de mail wel verstuurd.
Ik heb op internet dit probleem vaker voorbij zien komen, maar helaas nooit met een oplossing. Weet iemand waar het aan ligt dat er geen mail wordt verstuurd wanneer het script middels cron wordt gestart?

cronjob:
Code:
php /home/USER_NAME/public_html/LINK_NAAR_FILE.php

php:
PHP:
#!/usr/bin/php
$subject="Onderwerp";
$message="Het bericht";
mail("contact@example.nl",$subject,$message);

Alvast bedankt!
 
php.ini
daar kan je email lib toevoegen.
als je toch in de php.ini zit kan je ook gd2 zoeken en deze aanzetten omdat die ook veel gebruikt wordt bij figuren te verkleinen.
 
Bedankt voor je reactie. Weet je misschien hoe ik die kan aanpassen met cPanel? Via FTP kan ik niet in die map komen.
 
Dit komt omdat het bestandje via de server wordt uitgevoerd, en niet via jouw eigen pagina.
Php.ini is waarschijnlijk afgeschermd en daar kan je zelf niks in bewerken bij de meeste shared hosts. (oftewel, welke host heb je?)

Wat ik zou doen is bijvoorbeeld phpmailer gebruiken en daarmee de mails versturen, dat werkt beter dan sendmail naar mijn mening.
 
Ik weet niet of je dit bedoelt, maar ik heb mijn website gehost bij Neostrada.nl. Wellicht kunnen zij php.ini aanpassen zodat mail() wel werkt.
Heeft phpmailer geen aangepaste php.ini nodig dan? Ik heb er naar gekeken maar begrijp niet goed hoe ik het moet toepassen. Heb je misschien een sample code of verwijzing voor me?
 
Je wil alleen een mailtje sturen via Cron? https://github.com/Synchro/PHPMailer is de volledige versie van PHPmailer, als je iets naar beneden scrollt staat daar al een kant en klaar voorbeeld, en anders kan je even kijken in de map examples.
Ik zou proberen gewoon deze volledige map te clonen op je server en dan een example te draaien.

Edit: Zou je je cron job eens kunnen posten? Ik denk namelijk dat die /usr/sbin niet meeneemt, welke nodig is voor sendmail.
 
Laatst bewerkt:
Bedankt voor je hulp. Ik voer met Cron nu een php-file uit waarin een aantal bewerkingen worden gedaan met MySQL. Tevens moet daarbij een mail verstuurd worden die mij op de hoogte stelt wat er is veranderd, maar dat lukt dus niet.
Dit is de php code die ik nu gebruik voor phpmailer:
PHP:
		include("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "contact@domeinnaam.nl";
$mail->FromName = "Cronjob";
$mail->AddAddress("contact@domeinnaam.nl", "Domeinnaam");
$mail->Subject = "Entry geüpload naar Database";
$mail->Body = "De volgende entry is van de wachtrij naar de database geüpload: ".$titelEntry.". ";
$mail->WordWrap = 50;
if(!$mail->Send()){
	echo 'Er ging iets mis tijdens het versturen, namelijk: ';
	echo $mail->ErrorInfo;
} else {
	echo 'De mail is verstuurd.';
}
Net als mail() werkt deze code prima als ik hem handmatig uitvoer, maar niet met een cronjob.

De cronjob heb ik op 2 manieren geprobeerd te draaien:
Code:
php /home/USER/public_html/backend/cronjobfile.php
Deze voert de MySQL taken prima uit.

Code:
/usr/bin/wget -q 'http://www.domeinnaam.nl/backend/cronjobfile.php'
Hiervan weet ik nog niet of de rest van het script werkt, maar mail in ieder geval niet.
 
Laatst bewerkt:
Even een gok uit m'n hoofd, probeer deze cronjob eens. Maakt dat verschil of werkt ie dan helemaal niet meer?
Code:
/usr/local/php5/bin/php -q /home/USER/public_html/backend/cronjobfile.php
 
Ondertussen heb ik een reactie terug van mijn hostingprovider, en zij tipten om de mail via SMTP te versturen in verband met spamfilters. Phpmailer heb ik dus geconfigureerd naar SMTP, en het werkt!
Het probleem lag dus bij de strenge spamfilters als mail automatisch / met cronjob wordt verstuurd. Bedankt voor je hulp, nu begrijp ik ook meer van php en mailen :)
 
Dat was inderdaad mijn volgende suggestie ;). Fijn dat het werkt!
Markeer de vraag nog even als opgelost zodat iedereen weet dat het werkt. Veel plezier nog in php verder :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan