2012-03-08 4 views
1

J'utilise la classe PHPMailer pour envoyer une lettre et j'utilise le compte Gmail comme serveur smtp. problème est ce que parfois il fonctionne bien et les visiteurs obtiennent des lettres, mais parfois non et me montrer l'erreur "Corps du message est vide" ou comme ça. Je pense que si vous avez un problème avec le code, alors n'envoyez pas de lettre pour les visiteurs du site. pourquoi heureux comme ça? Qu'est-ce qui peut poser problème?PHPMailer envoie parfois des mails parfois non. J'utilise gmail smtp

+0

Pouvez-vous poster votre code? –

Répondre

0

mon code est

function mail_send($type, $id, $mailadd, $maillname) { 
    global $lang; 
    global $site_adress; 
    global $pavadinimas; 
    global $tekstas; 
    global $ivadas; 
    global $full_date; 
    global $short_date; 

    require_once ('includes/phpmailer/class.phpmailer.php'); 
    $mail = new PHPMailer(); 

    $siteuser_name = SQL_ROW("users", "WHERE user_id='1'", "user_name"); 
    $siteadminemail = SQL_ROW("users", "WHERE user_id='1'", "user_email"); 
    $alttext = users_langs(altmailtext); 
    if ($type == "mailactiveletter") { 
     $subj = users_langs("mailactivesubject"); 
     $linktur = "$site_adress/$lang/usermail_$type-$id.html#kat"; 
     // var_dump($linktur,$type, $siteuser_name,$siteadminemail); 
    } 
    if ($type == "mailchangeadress") { 
     $subj = users_langs("prisijduomenupriminimas"); 
     $linktur = "$site_adress/$lang/usermail_$type-$id.html#kat"; 
    } 
    $body = file_get_contents("$linktur"); 
    $body = eregi_replace("[\]", '', $body); 

    define('GUSER', '[email protected]'); // Gmail username 
    define('GPWD', 'xxx'); // Gmail password 

    $mail->IsSMTP(); // enable SMTP 
    $mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only 
    $mail->SMTPAuth = true; // authentication enabled 
    $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail 
    $mail->Host = 'smtp.gmail.com'; 
    $mail->Port = 465; 
    $mail->Username = GUSER; 
    $mail->Password = GPWD; 
    $mail->CharSet = 'UTF-8'; 
    //$mail->AddReplyTo("$siteadminemail", "$siteuser_name"); 
    $mail->AddReplyTo("[email protected]", "$siteuser_name"); 
    $mail->AddAddress("$mailadd", "$maillname"); 
    // $mail->SetFrom("$siteadminemail", "$siteuser_name"); 
    $mail->SetFrom("[email protected]", "$siteuser_name"); 
    // $mail->AddReplyTo("$mailadd", "$maillname"); 
    $mail->AddReplyTo("[email protected]", "$siteuser_name"); 

    $mail->Subject = "$subj"; 

    $mail->AltBody = "$alttext $linktur"; 
// optional, comment out and test 
    $mail->MsgHTML($body); 

    if (!$mail->Send()) { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
    } else { 
     echo ""; 
    } 


} 
1

Modifier ces lignes:

$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail 
$mail->Port = 465; 

Avec:

$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for Gmail 
$mail->Port = 587; 

et nous espérons que tout ira bien à partir de maintenant.

0

Ajoutez une propriété $ mail-> Sender.

Par exemple: $ mail-> L'expéditeur est la même valeur qu'un $ mail-> De et j'ajoute les deux lignes.

$ mail-> De = "[email protected]"; $ mail-> Sender = "[email protected]";

Questions connexes