Rechercher : dans
Par :

Fonction mail() et erreur 500

Dernière réponse le 1 avr 2009 à 12:28:31 littaudio, le 27 déc 2007 à 17:37:42 
 Signaler ce message aux modérateurs

Bonjour à tous,

Je gère un site sous Wordpress hébergé sur Online.net et j'utilise le plugin Ajax Newsletter. Lorsque je déclenche l'envoi de ma newsletter (un peu plus de 2000 abonnés), j'obtiens au bout d'un certain temps une erreur 500. Cela veut dire que le code est bon mais que le temps d'éxécution de la requête est trop long, si bien que seul les premiers inscrits à ma newsletter la reçoivent effectivement.

Je compte déménager chez 1&1 (offre Pack Pro Standard). À votre avis est-ce que je risque de rencontrer le même problème ? Et si oui, comment le contourner ? Un technicien de chez 1&1 m'a dit qu'il y aurait problème si le script n'appelait pas plusieurs pages. Qu'est-ce que cela signifie ?

Je joins les lignes de code qui éxécutent l'envoi de la newsletter dans mon script :

	/**
	 * Send the newsletter to all subscribers
	 * @param string $content The content to be send in the newsletter
	 * @param string $date The date to overwrite the last newsletter date (optional)
	 * 
	 * @return bool ture if all emails were sent, false if an error occured.
	 */
	function sendNewsletter($content, $date = ""){
		$members = ajaxNewsletter::getMembers("active");
		
		$header = get_option("snews_header");
		$footer = get_option("snews_footer");
		$subject = get_option("snews_subject");
		$from = get_option("snews_from");
		
		$sent = false;
		foreach ($members as $member){
			$to  = $member->email;
			$confirmationURL = get_bloginfo("wpurl") . "/wp-content/plugins/wp-ajax-newsletter/confirmation.php?del={$member->confkey}";
			$message = "";
			$message .= "$header\n\n";
			$message .= "$content";
			$message .= "$footer";
			$message = wordwrap($message, 200, "\n");
			
			if(!ajaxNewsletter::sendEmail($from,$to,"","",$subject,$message)){
				return false; //an error occured so we stop sending emails
			}
			$sent = true;
		}


D'avance merci pour vos réponses et vos suggestions.
Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « Fonction mail() et erreur 500 » dans :
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...

1

Ohm-WorK, le 28 déc 2007 à 07:54:19

Salut

Le chargement, d'un point de vue serveur, d'un script PHP est généralement limité à une trentaine de seconde. Ceci pour une raison simple : une boucle infinie dans un script PHP ne s'arreterai jamais sur le serveur si celui ci n'y mettait pas fin. Perso, j'utilise ce type d'algorythme d'envoie de mail bouclé sur une requète SQL pour l'envoie de mail à des abonnés, mais ca concerne moins de 100 personnes. Pour 2000 personnes c'est énorme, tu sera bloqué par tous les hébergeurs, et c'est normal. Essaye d'envoyer 2000 mails à la suite avec outlook ou thunderbird, tu verra le temps qu'il va prendre !!!

La bonne solution pour une newsletter de cet ampleur, c'est d'utiliser une liste de diffusion. En plus, online t'en fournit une :)

A++

Ohm-WorK [Contributeur CCM]
La vie est une maladie mortelle, sexuellement transmissible ­(Woody Allen)

Répondre à Ohm-WorK

2

littaudio, le 28 déc 2007 à 13:30:15

Merci beaucoup pour ces éclaircissements. Sais-tu si je pourrais contourner le problème avec un serveur dédié ? (ou est-ce que le délai de 30 secondes est intrinsèque au langage PHP lui-même ?)

Répondre à littaudio

3

vero, le 1 avr 2009 à 11:05:14

Bonjour,

Vous envoyez des newsletter depuis online.net, bonne nouvelle, donc : c'est possible !
Pourriez-vous me dire quels paramètres utiliser pour l'envoi chez eux ?

Je n'arrive pas à configurer mes envois...
PHP ?
quel Sendmail Path ?

Merci d'avance pour vos réponses,

Véronique

Répondre à vero

4

 littaudio, le 1 avr 2009 à 12:28:31

Bonjour,

Oui ça devrait marcher si vous n'avez pas trop de destinataires, en PHP.

Il me semble en revanche que Online.net n'accepte pas la fonction mail(), mais la remplace par la fonction email() dont les paramètres sont les suivants :

email($from, $to, $sujet, $message, $ReplyTo, "Return-path: uneadresse@email") ;


Les deux derniers paramètres (ReplyTo et Return-path) étant facultatifs.

Mais tout ça est de mémoire...

Une recherche Google à "fonction email online.net" devrait aider.

Répondre à littaudio
Collection CommentÇaMarche.net