IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Header et Timeout


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut [Mail] Header et Timeout
    Bonjour,

    Je suis entrain de développer une NewsLetter, en gros voici le mécanisme que je pensais adopter pour parlier au timeOut :

    select * from ma table limit $min,100

    puis un header location sur la même page qui renvoi $min +100.
    Avec un sleep de quelques secondes au début du script pour pas trop charger le serveur mail.

    En parallèle, à chaque passage, je met une trace dans un fichier ...

    Hors à 800 mails .. il part systématiquement en vrille ...

    Est-ce que le timeOut est remis à 0 avec un header ? A mon sens oui mais j'en viens à douter ...

    D'avance merci ...

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    A 800 mails il te dit quoi ? Une erreur de TimeOut justement ?

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    En effet "il part en vrille" n'est pas très parlant.... Quelle est l'erreur ? Est-tu sûr que ton smtp accepte 800 mails en moins de X secondes ? Fais attention, ton hébergeur peut te considérer comme spammmeur si tu charges trop le serveur de mail.

  4. #4
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Oui alors autant pour moi ...

    En fait il ne me rends jamais la main ...

    Or j'ai 1100 adresses en base...

    Pour ce qui est de mon hébergeur ... faut peut-être que je lui en parle ??
    C un hébergement payant pour une société mais peut-être qu'il a effectivement mis des limites ...

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Les mails sont personnalisés ?
    On peut voir ton code ?

  6. #6
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Voici mon Code ... Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    /**************************************************
    	ENVOI DU MAIL 
    ***************************************************/
     
    require_once('../../Connections/CE_Conn.php');
    mysql_select_db($database_CE_Conn, $CE_Conn);
    // J'inlcus ma class
     
     
    // Fonction
    function ValideMail($email) {
        $mail_valide =  ereg("([A-Za-z0-9]|-|_|\.)*@([A-Za-z0-9]|-|_|\.)*\.([A-Za-z0-9]|-|_|\.)*",$email);
    	if ($mail_valide) return TRUE;
        else return FALSE;
    }
     
    //récupération de tous les inscrits à la news-letter
    $table="inscriptionnewsletter";
     
    $cptOK=isset($_GET['cptOK'])?$_GET['cptOK']:0;
    $tabKO=isset($_GET['tabKO'])?$_GET['tabKO']:array();
    $limit=isset($_GET['limit'])?($_GET['limit']+200):0;
     
    // Recuperation des destinataires :
    $perSexe=isset($_POST['perSexe'])?$_POST['perSexe']:"";
    $perEtat=isset($_POST['perEtat'])?$_POST['perEtat']:"";
    $perEnfant=isset($_POST['perEnfant'])?$_POST['perEnfant']:"";
     
    // Je construit ma requete selon les destinataires choisis:
    $sql="SELECT DISTINCT(insMel),insCodePerso FROM $table, personnel WHERE persCodePerso=insCodePerso";
    if($perSexe[1]!=1) $sql.=" AND perSexe<>1 ";
    if($perSexe[2]!=1) $sql.=" AND perSexe<>2 ";
    if($perEtat[1]!=1) $sql.=" AND perEtat<>'A' ";
    if($perEtat[0]!=1) $sql.=" AND perEtat<>'R' ";
    if($perEnfant[1]!=1) $sql.=" AND perEnfant<>'-1' ";
    if($perEnfant[0]!=1) $sql.=" AND perEnfant<>0 ";
    $sql.=" ORDER BY insCodePerso ";
    $sql=isset($_GET['sql'])?stripslashes(urldecode($_GET['sql'])):$sql;
    $sqlLim =$sql."LIMIT $limit, 200";
    //
     
     
     
    /**************************************************
    	ENREGISTREMENT EN BASE DU MAIL
    ***************************************************/
    $requete="insert into nl values (now(),'".$tabRetour['fichier']."','".$_POST['sujet']."','".$_POST['corpsMail']."')";
    //$mel_row=mysql_query($requete, $CE_Conn) or $message="Impossible d'enregistrer ce mail.";
     
     
     
    $res=mysql_query($sqlLim, $CE_Conn) or die(mysql_error());
    $num=mysql_num_rows($res);
     
    // LOG POUR DEBUG
    $fic=fopen('fic.txt','w+')  or die ("PB de droits sur ".$_SERVER['PHP_SELF']);;
    fwrite($fic,"=- $sqlLim -NUM : $num -- > $cptOK envoyés\n");
    fclose($fic);
     
    // Mail html
    if(isset($_POST['corpsMail'])) {
    	$tstp=time();
    	$fichier="nl.html";
    	$fic=fopen($fichier,'w+') or die ("Debug: PB de droits sur ".$_SERVER['PHP_SELF']);
    	$corpsMail=stripslashes($_POST['corpsMail']);
    	fwrite($fic,$_POST['corpsMail']);
    	fclose($fic);
    }
     
    $mesKO="";
    $dateJour=date('Y-m-d H:i:s');
     
    while($row = mysql_fetch_assoc($res)){
    	 if(ereg( "^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$",$row['insMel'])){
    		$cptOK++;
     
    		$To = $row['insMel'];
    		$From = "xxxxxxxxxxxxxx";
    		$Reply = "info@xxxxxxx.xx";
     
    		$Sujet = $_POST['sujet'];
     
    		$Entete="Content-type:text/html\nFrom:".$From."\r\nReply-To:".$Reply;
     
    		//mail($To, $Sujet, stripslashes($_POST['corpsMail']), $Entete);
    		$sqlUP="UPDATE $table SET insDernierEnvoi='$dateJour' WHERE insCodePerso='".$row['insCodePerso']."'";
    		$resUP=mysql_query($sqlUP);
    	}
    	else $tabKO[$row['insCodePerso']]=$row['insMel'];
    }
    // Les emails à pb 
    /*
    if(is_array($tabKO)){
    	foreach($tabKO as $key => $value){
    		$mesKO.="<br/><li>$key ==> $value</li>";
    	}
    }*/
     
    if ($message == "") $message =  "\nLa news-letter a &eacute;t&eacute; envoy&eacute;e à $cptOK personnes inscrites! <br> $mesKO ";
    if($num == 200 ) {
    	sleep(5);
    	header('location: envoiNL_exec.php?limit='.$limit.'&cptOK='.$cptOK.'&tabKO='.$tabKO.'&sql='.urlencode($sql));
    	exit();
    }
     
    header('Location: ../index.php?url=envoiNL/envoiNL.php&message='.urlencode($message));
    exit();
    ?>

  7. #7
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    Salut,

    si c bien un probleme de time out,

    tu as essayé la fonction
    set_time_limit () ?

    sahid

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Et si tu envoyais tes mails en mettant tes expediteurs en CC ?
    Tous ceux qui ont le meme mails tu les mets en cc, par paquets de 50 par exemples et tu envoies 1 seul mail pur 50 utilisateurs...

  9. #9
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Merci pour vos réponses

    En fait ... Je peux pas forcer les set_time_limit() ...

    Mon hébergerment ne le permet pas ...

    MrN ... Je vois ... C'est sûr que ca diviserai par 50 le nombre d'envois ...


    La synthaxe pour envoyer à plusieurs en CC ??

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Version propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $mail = new Mail();
    $mail->setBody($body);
    $mail->setSubject($subject);
    foreach($emails as $email) {
       $mail->addCC($email);
    }
    $mail->send();
    http://www.phpguru.org/static/mime.mail.html
    http://www.swiftmailer.org/
    ...


    Version 'roots' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Entete  = "Content-type:text/html\nFrom:".$From."\r\nReply-To:".$Reply;
    $Entete .= "\r\nCc: ". implode(', ', $emails);
    A tester...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parse de mail, headers
    Par pyknite dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 12/05/2009, 09h14
  2. [Mail] mail header avec saut de ligne
    Par benoitXV dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2008, 12h32
  3. [Mail] mail : header pour courriel
    Par Dirty Harry dans le forum Langage
    Réponses: 3
    Dernier message: 25/01/2007, 16h13
  4. [Mail] mail : headers dans le corps du mail !?
    Par tytom dans le forum Langage
    Réponses: 1
    Dernier message: 24/08/2006, 12h44
  5. [Mail] header "From:" avec mail()
    Par oranoutan dans le forum Langage
    Réponses: 16
    Dernier message: 16/12/2005, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo