408 Stimmen

Versenden von E-Mails über den GMail SMTP-Server von einer PHP-Seite aus

Ich versuche, eine E-Mail über den SMTP-Server von GMail von einer PHP-Seite aus zu senden, aber ich erhalte diesen Fehler:

Authentifizierungsfehler [SMTP: SMTP-Server unterstützt keine Authentifizierung (Code: 250, Antwort: mx.google.com bei Ihrem Dienst, [98.117.99.235] SIZE 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES PIPELINING)]

Kann jemand helfen? Hier ist mein Code:

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <ramona@microsoft.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "smtp.gmail.com";
$port = "587";
$username = "testtest@gmail.com";
$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>");
 }
?>

364voto

pavan kumar Punkte 3738
// Pear Mail Library
require_once "Mail.php";

$from = '<fromaddress@gmail.com>';
$to = '<toaddress@yahoo.com>';
$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' => 'johndoe@gmail.com',
        'password' => 'passwordxxx'
    ));

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

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

111voto

shasi kanth Punkte 6787

Verwendung von Schneller Versand ist es ganz einfach, eine E-Mail über Gmail-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('abc@example.com' => 'ABC'))
  ->setTo(array('xyz@test.com'))
  ->setBody('This is a test mail.');

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

55voto

crb Punkte 8099

Ihr Code scheint kein TLS (SSL) zu verwenden, was eine die für die Zustellung von E-Mails an Google erforderlich sind (und die Ports 465 oder 587 verwenden) .

Sie können dies tun, indem Sie

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

Ihr Code sieht verdächtig nach dieses Beispiel die im Hostnamenschema auf ssl:// verweist.

34voto

Madan Sapkota Punkte 23065

Ich empfehle Pear Mail nicht. Es ist seit 2010 nicht mehr aktualisiert worden. Lesen Sie auch die Quelldateien; der Quellcode ist fast veraltet, im PHP 4-Stil geschrieben und viele Fehler / Bugs wurden gepostet (Google es). Ich verwende Swift Mailer.

Schneller Versand lässt sich in jede in PHP 5 geschriebene Webanwendung integrieren und bietet einen flexiblen und eleganten objektorientierten Ansatz für den Versand von E-Mails mit einer Vielzahl von Funktionen.

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

Unterstützung von Servern, die Benutzernamen und Passwort und/oder Verschlüsselung erfordern.

Schutz vor Header-Injection-Angriffen ohne Strippen von Anfragedaten Inhalt.

Senden Sie MIME-konforme HTML-/Multipart-E-Mails.

Verwenden Sie ereignisgesteuerte Plugins, um die Bibliothek anzupassen.

Umgang mit großen Anhängen und Inline-/Einbettungsbildern mit wenig Speicherplatz verwenden.

Es ist eine freie und offene Quelle, die Sie Swift Mailer herunterladen und laden Sie sie auf Ihren Server hoch. (Die Funktionsliste ist von der Website des Eigentümers kopiert).

Das Arbeitsbeispiel von Gmail SSL/SMTP und Swift Mailer finden Sie hier...

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

// Mail Transport
$transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465)
    ->setUsername('username@gmail.com') // 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('sender@example.com' => 'Sender Name')) // can be $_POST['email'] etc...
    ->setTo(array('receiver@example.com' => '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. :(';
}

28voto

Deept Raghav Punkte 1419
<?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   = "user@gmail.com";  // GMAIL username
$mail->Password   = "password";            // GMAIL password

$mail->SetFrom('contact@prsps.in', 'PRSPS');

//$mail->AddReplyTo("user2@gmail.com', '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 = "user2@yahoo.co.in";
$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!";
}

?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X