it-swarm.com.de

Senden Sie eine E-Mail über den GMail SMTP-Server von a PHP Seite

Ich versuche, eine E-Mail über den SMail-Server von GMail von einer PHP -Seite aus zu senden. Ich erhalte jedoch die folgende Fehlermeldung:

authentifizierungsfehler [SMTP: SMTP-Server unterstützt keine Authentifizierung (Code: 250, Antwort: mx.google.com zu Ihren Diensten, [98.117.99.235] GRÖSSE 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES PIPELINING)]

Kann jemand helfen? Hier ist mein Code:

<?php
require_once "Mail.php";

$from = "Sandra Sender <[email protected]>";
$to = "Ramona Recipient <[email protected]>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$Host = "smtp.gmail.com";
$port = "587";
$username = "[email protected]";
$password = "testtest";

$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);

if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>
362
skb
// Pear Mail Library
require_once "Mail.php";

$from = '<[email protected]>';
$to = '<[email protected]>';
$subject = 'Hi!';
$body = "Hi,\n\nHow are you?";

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

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

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

if (PEAR::isError($mail)) {
    echo('<p>' . $mail->getMessage() . '</p>');
} else {
    echo('<p>Message successfully sent!</p>');
}
341
pavan kumar

Mit Swift mailer ist es ziemlich einfach, eine Mail über Google Mail-Anmeldeinformationen zu senden:

<?php
require_once 'Swift/lib/Swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
  ->setUsername('GMAIL_USERNAME')
  ->setPassword('GMAIL_PASSWORD');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Test Subject')
  ->setFrom(array('[email protected]' => 'ABC'))
  ->setTo(array('[email protected]'))
  ->setBody('This is a test mail.');

$result = $mailer->send($message);
?>
101
shasi kanth

Ihr Code scheint nicht TLS (SSL) zu verwenden, was notwendig ist, um E-Mails an Google zu senden (und die Ports 465 oder 587 zu verwenden) .

Sie können dies durch Einstellung tun 

$Host = "ssl://smtp.gmail.com";

Ihr Code sieht verdächtig wie this example aus, das im Hostnamenschema auf ssl: // verweist.

53
crb

Ich kann Pear Mail nicht empfehlen. Es wurde seit 2010 nicht aktualisiert. Lesen Sie auch die Quelldateien. Der Quellcode ist fast veraltet, im PHP 4-Stil geschrieben und viele Fehler/Bugs wurden veröffentlicht (Google it). Ich verwende Swift Mailer.

Swift Mailer kann in jede in PHP 5 geschriebene Webanwendung integriert werden und bietet einen flexiblen und eleganten objektorientierten Ansatz zum Versenden von E-Mails mit einer Vielzahl von Funktionen.

Senden Sie E-Mails mit SMTP, Sendmail, Postfix oder einem benutzerdefinierten Transport Implementierung Ihrer eigenen.

Support-Server, für die Benutzername und Kennwort und/oder Verschlüsselung erforderlich sind.

Schutz vor Header-Injection-Angriffen, ohne Anforderungsdaten zu entfernen Inhalt.

MIME-kompatible HTML/Multipart-E-Mails senden.

Verwenden Sie ereignisgesteuerte Plugins, um die Bibliothek anzupassen.

Bearbeiten Sie große Anhänge und eingebettete Bilder mit wenig Speicherplatz benutzen.

Es ist eine kostenlose und offene Quelle, die Sie Swift Mailer herunterladen und auf Ihren Server hochladen können. (Die Funktionsliste wird von der Besitzer-Website kopiert).

Das Arbeitsbeispiel für Gmail SSL/SMTP und Swift Mailer ist hier ...

// Swift Mailer Library
require_once '../path/to/lib/Swift_required.php';

// Mail Transport
$transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465)
    ->setUsername('[email protected]') // Your Gmail Username
    ->setPassword('my_secure_gmail_password'); // Your Gmail Password

// Mailer
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject Here')
    ->setFrom(array('[email protected]' => 'Sender Name')) // can be $_POST['email'] etc...
    ->setTo(array('[email protected]' => 'Receiver Name')) // your email / multiple supported.
    ->setBody('Here is the <strong>message</strong> itself. It can be text or <h1>HTML</h1>.', 'text/html');

// Send the message
if ($mailer->send($message)) {
    echo 'Mail sent successfully.';
} else {
    echo 'I am sure, your configuration are not correct. :(';
}

Ich hoffe das hilft. Viel Spaß beim Codieren ... :)

32
Madan Sapkota
<?php
date_default_timezone_set('America/Toronto');

require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = "gdssdh";
//$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP(); // telling the class to use SMTP
//$mail->Host       = "ssl://smtp.gmail.com"; // SMTP server
$mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // set the SMTP port for the GMAIL server
$mail->Username   = "[email protected]";  // GMAIL username
$mail->Password   = "password";            // GMAIL password

$mail->SetFrom('[email protected]', 'PRSPS');

//$mail->AddReplyTo("[email protected]', 'First Last");

$mail->Subject    = "PRSPS password";

//$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "[email protected]";
$mail->AddAddress($address, "user2");

//$mail->AddAttachment("images/phpmailer.gif");      // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

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

?>
28
Deept Raghav

SwiftMailer kann E-Mail über externe Server versenden.

hier ein Beispiel, das zeigt, wie ein Google Mail-Server verwendet wird:

require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";

//Connect to localhost on port 25
$Swift =& new Swift(new Swift_Connection_SMTP("localhost"));


//Connect to an IP address on a non-standard port
$Swift =& new Swift(new Swift_Connection_SMTP("217.147.94.117", 419));


//Connect to Gmail (PHP5)
$Swift = new Swift(new Swift_Connection_SMTP(
    "smtp.gmail.com", Swift_Connection_SMTP::PORT_SECURE, Swift_Connection_SMTP::ENC_TLS));
20
Pekka 웃

Der in der Frage angegebene Code erfordert zwei Änderungen

$Host = "ssl://smtp.gmail.com";
$port = "465";

Für eine SSL-Verbindung ist Port 465 erforderlich.

14
s01ipsist

Senden Sie E-Mail mit der phpMailer-Bibliothek über Gmail Laden Sie die Bibliotheksdateien nicht von Github .

<?php
/**
 * This example shows settings to use when sending via Google's Gmail servers.
 */
//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
date_default_timezone_set('Etc/UTC');
require '../PHPMailerAutoload.php';
//Create a new PHPMailer instance
$mail = new PHPMailer;
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "[email protected]";
//Password to use for SMTP authentication
$mail->Password = "yourpassword";
//Set who the message is to be sent from
$mail->setFrom('[email protected]', 'First Last');
//Set an alternative reply-to address
$mail->addReplyTo('[email protected]', 'First Last');
//Set who the message is to be sent to
$mail->addAddress('[email protected]', 'John Doe');
//Set the subject line
$mail->Subject = 'PHPMailer GMail SMTP test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
$mail->addAttachment('images/phpmailer_mini.png');
//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}
5
Bhavin Solanki

Für Google Mail ist Port 465 erforderlich, außerdem ist es der Code von phpmailer :)

4
sandeep

Ich hatte auch dieses Problem. Ich habe die richtigen Einstellungen vorgenommen und weniger sichere Apps aktiviert, aber es funktionierte immer noch nicht. Schließlich habe ich diese https://accounts.google.com/UnlockCaptcha aktiviert und es hat für mich funktioniert. Ich hoffe das hilft jemandem.

3
Strategist

Um PEARs Mail.php in Ubuntu zu installieren, führen Sie die folgenden Befehle aus:

    Sudo apt-get install php-pear
    Sudo pear install mail
    Sudo pear install Net_SMTP
    Sudo pear install Auth_SASL
    Sudo pear install mail_mime
3
Nahid

Ich habe eine Lösung für GSuite-Konten, die nicht das Suffix "@ gmail.com" hat. Ich denke auch, dass es für GSuite-Konten mit @ gmail.com funktionieren wird, aber ich habe es nicht probiert. Zunächst sollten Sie die Berechtigung haben, die Option "allos¿w less safe app" für Ihr GSuite-Konto zu ändern. Wenn Sie über die Berechtigungen verfügen (Sie können Kontoeinstellungen-> Sicherheit einchecken), müssen Sie die "Zwei-Schritt-Faktor-Authentifizierung" deaktivieren. Gehen Sie zum Ende der Seite und setzen Sie "Ja", um weniger sichere Anwendungen zuzulassen. Das ist alles. Wenn Sie keine Berechtigungen zum Ändern dieser Optionen haben, funktioniert die Lösung für diesen Thread nicht. Überprüfen Sie https://support.google.com/a/answer/6260879?hl=de , um Änderungen an der Option "Weniger zulassen ..." vorzunehmen.