2010-07-10 21 views
4

J'ai un script de messagerie PHP qui envoie avec succès des emails à toutes les adresses MAIS GMail, alors maintenant j'essaye d'en créer un avec les paquets Mail et Mail_Mime de PEAR qui peuvent envoyer à GMail. J'ai l'impression que cela n'est possible que si je me connecte via le serveur SMTP de GMail pour envoyer les messages. Lors d'essayer un script de test simple, je reçois l'erreur suivante:PEAR Mail, "impossible de définir l'expéditeur"

unable to set sender to [[email protected]]

Il n'y a rien de mal à l'adresse et this site suggère que s'il n'y a rien mal formaté sur l'adresse, il est un problème de connectivité du serveur. Mais comment puis-je résoudre un problème de connectivité dans cette situation? Ou y a-t-il autre chose que je fais de mal? Ou existe-t-il un autre moyen plus simple d'obtenir un script PHP pour envoyer des messages à GMail?

Mon code est la suivante (adresse e-mail et mot de passe changé, évidemment)

$from = "[email protected]"; 
$to = "[email protected]"; 
$subject = "Test"; 
$crlf = "\n"; 
$text = 'Text message'; 
$html = '<html><body>HTML message</body></html>'; 
$headers = array (
    'From' => $from, 
    'Return-Path' => $from, 
    'Subject' => $subject 
); 

$mime = new Mail_mime($crlf); 
$mime->setTXTBody($text); 
$mime->setHTMLBody($html); 
$body = $mime->get(); 
$headers = $mime->headers($headers); 

$smtp = Mail::factory(
    'smtp', 
    array (
     'host' => 'ssl://smtp.gmail.com', 
     'port' => 465, 
     'auth' => true, 
     'username' => "[email protected]", 
     'password' => "password", 
     'debug' => true 
    ) 
); 

$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo("<p>" . $mail->getMessage() . "</p>"); 
    echo 'FAILURE'; 
} else { 
    echo 'SUCCESS'; 
} 
+0

J'ai la même erreur exacte. Aidez-moi! – bentford

+0

Mon problème a fini par être résolu. J'ai impliqué le personnel de support de mon serveur et ils l'ont réparé. J'ai demandé quel était le problème et ils m'ont seulement dit que "l'email était rejeté à gmail par votre nom d'utilisateur" et que "c'était quelque chose qui ne pouvait être fixé que comme admin". –

Répondre

1

Je ne peux pas imaginer pourquoi une adresse simple de [email protected] ne fonctionnerait pas, il est donc probablement une autre erreur masquerading comme que. Assurez-vous de ne pas supprimer accidentellement les messages d'erreur (appelez error_reporting (E_ALL) avant d'appeler send). Cependant, une chose à garder à l'esprit est que vous n'avez pas besoin d'utiliser le serveur SMTP de GMail pour envoyer du courrier aux adresses GMail. Vous pouvez utiliser celui fourni avec votre hébergement pour le même effet.

+0

Comment avez-vous changé le code pour que cela fonctionne? – Rick