2017-10-19 30 views
1

Gardez à l'esprit, je suis nouveau à PHPComment intégrer auth SMTP dans un script PHP sendmail

Salut, je vais avoir du mal à envoyer du courrier SMTP à partir d'un script qui utilise uniquement sendmail.

Le code ci-dessous est mon ancien code d'origine qui fonctionne mais qui donne un avertissement sur Gmail lorsqu'il est affiché. Il dit que ce message ne peut pas être vérifié. J'essaie d'envoyer à l'utilisateur ses informations d'identification à partir d'un formulaire de réinitialisation de mot de passe (je vais aussi implémenter cela sur le formulaire d'inscription).

Code d'origine:

##### Mail functions ##### 

    function sendLostPasswordEmail($myusername, $email, $newpassword) 
    { 

    global $domain; 
    $message = " 
    You have requested a new password on example.com 

    Here is Your new password information: 

    username: $myusername 
    password: $newpassword 


    Regards, 
    example Administration 
    "; 

    if (sendMail($email, "Your password has been reset.", $message, "[email protected]")) 
    { 
    return true; 
    } else 
    { 
    return false; 
    } 


    } 

    function sendMail($to, $subject, $message, $from) 
    { 


    $from_header = "From: $from"; 

    if (mail($to, $subject, $message, $from_header)) 
    { 
    return true; 
    } else 
    { 
    return false; 
    } 
    return false; 
    } 

    function sendActivationEmail($myusername, $password, $uid, $email, $actcode) 
    { 
    global $domain; 
    $link = "https://example.com/includes/activate.php?uid=$uid&actcode=$actcode"; 
    $message = " 
    Thank you for registering on https://example.com, 

    Your account information: 

    username: $myusername 
    password: $password 

    Please click the link below to activate your account. 

    $link 

    Regards 
    $domain Administration 
    "; 

    if (sendMail($email, "Please activate your account.", $message, "[email protected]")) 
    { 
    return true; 
    } else 
    { 
    return false; 
    } 
    } 

    ?> 

code à mettre en œuvre (je pense)

require_once "php/Mail/mail.php"; 

    $from = "Example Company <[email protected]>"; 
    $to = "<>"; 
    $subject = "Your Password Has Been Reset"; 
    $body = "$message"; 

    $host = "mail.example.com"; 
    $port = "465"; 
    $username = "[email protected]"; 
    $password = "***"; 

    $headers = array ('From' => $from, 
    'To' => $to, 
    'Subject' => $subject); 
    $smtp = Mail::factory('smtp', 
    array ('host' => $host, 
    'port' => $port, 
    'auth' => true, 
    'username' => $username, 
    'password' => $password)); 

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

Je crois que le 2ème extrait de code s'inscrira dans cependant l'endroit d'origine, je l'ai essayé pour plusieurs heures pour résoudre ce problème en vain. J'apprécie toute aide, si vous avez besoin de voir le code du formulaire de récupération de mot de passe ou pensez que je pourrais améliorer ma question s'il vous plaît dites-moi.

Répondre

1

Il y a plusieurs raisons qui vous empêchent d'envoyer des e-mail smtp (en supposant que vous êtes utilisation de la bibliothèque SMTP correcte)

  • Vous utilisez le port 465, c'est la connexion probable en utilisant smtps, s'il vous plaît vérifier que vous hébergez dans phpinfo () Si il supporte l'extension open_ssl.
  • Votre hôte ne permet pas la connexion SMTP (A2hosting hôte partagé par exemple)
  • Votre fournisseur SMTP doit être vérifié par votre domaine pour autoriser l'envoi de courrier électronique.

Espérons que cela peut aider.

+0

Mon problème n'est pas la connexion, mais l'implémentation. Je sais comment me connecter au serveur SMTP mais pas comment intégrer l'authentification SMTP dans mon script existant. Merci –

+0

Quelle bibliothèque utilisez-vous? Il existe de nombreuses bibliothèques sur Google, phpMailer, SwiftMailer .... –

+0

Il s'agit d'un paquet Pear http://pear.php.net/package/Mail/docs/1.4.1/Mail/Mail_smtp.html –

0

Essayez d'utiliser PHPMailer. Cet outil est si puissant. Vous avez juste besoin d'inclure cela à votre site Web, configurer et vous êtes prêt à partir. De plus, une bonne documentation et facile à comprendre.