PHP sayfasından GMail SMTP sunucusunu kullanarak e-posta gönder

11 Cevap php

Ben bir PHP sayfasından GMail'in SMTP sunucusu üzerinden e-posta göndermek için çalışıyorum, ama ben bu hatayı alıyorum:

kimlik doğrulama hatası [SMTP: SMTP sunucusu herhangi bir destek kimlik doğrulama yok (: 250, yanıtı: Kod SIZE [98.117.99.235], sizin hizmetinizde 35651584 8BITMIME starttls ENHANCEDSTATUSCODES PIPELINING mx.google.com)]

11 Cevap

// Pear Mail Library
require_once "Mail.php";

$from = '<from.gmail.com>';
$to = '<to.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>');
}

Bu yüzden kullanın lütfen kod çalışıyor.

Sizin kod necessary to deliver mail to Google (and using ports 465 or 587) olan TLS (SSL) kullanarak görünmüyor.

Sen ayarlayarak bunu yapabilirsiniz

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

Sizin kod this example hangi ssl :/ / hostname düzeni ifade eder gibi kuşkuyla bakar.

Pavan Kumar's answer bir sorunu dışında doğrudur:

$from = "<from.gmail.com>";
$to = "<to.yahoo.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "ssl://smtp.gmail.com";
$port = "465";
$username = "<myaccount.gmail.com>";
$password = "password";

Eğer $from ve $to alanlarda yapmak gibi biraz $username = "<myaccount.gmail.com>"; <> gerek yoktur. Onlar varsa ve çalışmaz. Umarım bu kimse yardımcı olur.

SwiftMailer dış sunucuları kullanarak e-posta gönderebilirsiniz.

Here GMail sunucusu kullanmak için nasıl gösteren bir örnektir.

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

Söz listelenen kod, iki değişiklik ihtiyacı

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

Liman 465 bir SSL bağlantısı için gereklidir.

Armut Posta önermiyoruz. Bu 2010 yılından bu yana güncellenmiş değil aynı zamanda kaynak dosyalarını okuyabilir.; kaynak kodu neredeyse modası geçmiş PHP 4 tarzında yazılmış ve birçok hata / hatalar (Google o) yayınlanmıştır edilir. Ben Swift Mailer kullanıyorum.

Swift Mailer bir çok özellikleri ile e-postalar göndermek için esnek ve zarif bir nesne yönelimli yaklaşım sunan, PHP 5 ile yazılmış herhangi bir web uygulaması içine entegre.

Send emails using SMTP, sendmail, postfix or a custom Transport implementation of your own.

Kullanıcı adı ve ihtiyaç Destek sunucular parola ve / veya şifreleme.

Protect from header injection attacks without stripping request data content.

MIME uyumlu HTML / multipart e-postalar gönderin.

Kitaplığı özelleştirmek için olay güdümlü eklentileri kullanabilirsiniz.

Handle large attachments and inline/embedded images with low memory use.

Bu Download Swift Mailer can ve sunucuya yüklemek ücretsiz ve açık kaynak. (Özellik listesi sahibinin web sitesinden kopyalanır).

Gmail SSL / SMTP ve Swift Mailer çalışma örneği burada ...

// 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. :(';
}

Bu yardımcı olur umarım. Mutlu kodlama ... :)

Gmail noktası 465 gerektirir ve aynı zamanda PHPMailer gelen kod :)

Set

'auth' => false,

Port 25 eserler eğer Ayrıca, bkz.

Bu post explains nasıl SMTP kimlik bilgilerini kullanarak "SMTP ve PHP kullanarak posta gönderme" için. Bu yazı Gmail’s SMTP sunucusu kullanarak e-posta göndermek için nasıl size göstereceğim.