Saya mencoba untuk mengirim email melalui GMail's SMTP server dari sebuah halaman PHP, tapi saya mendapatkan error ini:
kegagalan otentikasi [SMTP: SMTP server tidak mendukung otentikasi (kode: 250, respon: mx.google.com pada layanan anda, [98.117.99.235] UKURAN 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES PIPELINING)]
Siapapun dapat membantu? Berikut ini adalah kode saya:
<?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>");
}
?>
// 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>');
}
Menggunakan Swift mailer, hal ini cukup mudah untuk mengirim e-mail melalui Gmail kredensial:
<?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);
?>
Kode anda tidak muncul untuk menggunakan TLS (SSL), yang diperlukan untuk mengirim email ke Google (dan menggunakan port 465 atau 587).
Anda dapat melakukan ini dengan menetapkan
$host = "ssl://smtp.gmail.com";
Kode anda tampak curiga seperti contoh yang mengacu pada ssl:// di hostname skema.
Saya don't merekomendasikan Pir Mail. Ini belum diperbarui sejak tahun 2010. Baca juga sumber file; kode sumber ini hampir usang, yang ditulis dalam PHP 4 gaya dan banyak kesalahan / bug telah diposting (Google). Saya menggunakan Swift Mailer.
Swift Mailer terintegrasi ke dalam aplikasi web yang ditulis dalam PHP 5, menawarkan fleksibel dan elegan pendekatan berorientasi objek untuk mengirim email dengan banyak fitur.
Mengirim email menggunakan SMTP, sendmail, postfix atau kustom Transportasi implementasi dari anda sendiri.
Dukungan server yang memerlukan username & password dan/atau enkripsi.
Melindungi dari header serangan injeksi tanpa pengupasan permintaan data isi.
Kirim MIME compliant HTML/multipart email.
Menggunakan event-driven plugin untuk menyesuaikan perpustakaan.
Menangani lampiran besar dan inline/gambar tertanam dengan memori rendah gunakan.
Ini adalah gratis dan open source yang dapat anda Download Swift Mailer dan meng-upload ke server anda. (Daftar fitur disalin dari pemilik website).
Contoh kerja dari Gmail SSL/SMTP dan Swift Mailer adalah di sini...
// 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. :(';
}
Saya harap ini membantu. Happy coding... :)
<?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!";
}
?>
SwiftMailer dapat mengirim E-Mail yang menggunakan server eksternal.
berikut adalah contoh yang menunjukkan bagaimana untuk menggunakan server Gmail:
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));
Mengirim Email menggunakan phpMailer perpustakaan melalui Gmail Silahkan donwload file library dari 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!";
}
Aku punya masalah ini juga. Aku mengatur pengaturan yang benar dan telah mengaktifkan aplikasi yang kurang aman tetapi masih tidak bekerja. Akhirnya, saya diaktifkan ini https://accounts.google.com/UnlockCaptcha dan itu bekerja untuk saya. Saya harap ini membantu seseorang.
Saya mencoba saran yang ditawarkan oleh @shasi kanth, tapi itu tidak't bekerja keluar. Saya membaca dokumentasi dan ada beberapa perubahan yang dibuat. Jadi saya berhasil mengirim e-mail melalui Gmail menggunakan kode ini, di mana vendor/autoload.php didapatkan oleh komposer dengan komposer memerlukan "swiftmailer/swiftmailer:^6.0":
`` <?php require_once 'vendor/autoload.php'; $angkut = (baru Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))->setUsername ('SendingMail')->setPassword ('Kata');
$pengirim = new Swift_Mailer($transportasi);
$pesan = (baru Swift_Message('test')) ->setFrom(['Mengirim e-mail']) ->setTo(['Penerima e-mail']) ->setBody('Pesan') ;
$hasil = $mailer->kirim($pesan); ?> ``
Aku punya solusi untuk GSuite akun yang tidak memiliki "@gmail.com" sufix. Juga saya pikir itu akan bekerja untuk GSuite akun @gmail.com tapi belum mencobanya. Pertama, anda harus memiliki hak istimewa untuk mengubah opsi "allos¿w aplikasi yang kurang aman" untuk anda GSuite akun. Jika anda memiliki hak-hak istimewa (bisa anda cek di account settings->keamanan) maka anda harus menonaktifkan "dua langkah factor authentication" pergi ke akhir halaman dan diatur ke "ya" untuk memungkinkan aplikasi yang kurang aman. Yang's semua. Jika anda tidak memiliki hak untuk mengubah orang-orang pilihan solusi untuk thread ini tidak akan bekerja. Check https://support.google.com/a/answer/6260879?hl=en untuk membuat perubahan ke "memungkinkan kurang..." opsi.