it-swarm.asia

إرسال بريد إلكتروني باستخدام خادم SMTP GMail من PHP صفحة

أحاول إرسال بريد إلكتروني عبر خادم SMTP في GMail من صفحة PHP ، لكني تلقيت هذا الخطأ:

فشل المصادقة [SMTP: لا يدعم خادم SMTP المصادقة (الرمز: 250 ، استجابة: mx.google.com في خدمتك ، [98.117.99.235] SIZE 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES PIPELINING)]

هل أستطيع مساعدتك؟ هنا هو الكود الخاص بي:

<?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>");
 }
?>
372
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>');
}
347
pavan kumar

باستخدام Swift mailer ، من السهل جدًا إرسال بريد عبر بيانات اعتماد Gmail:

<?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

يبدو أن الشفرة لا تستخدم TLS (SSL) ، وهو أمر ضروري لتسليم البريد إلى Google (واستخدام المنافذ 465 أو 587) .

يمكنك القيام بذلك عن طريق الإعداد

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

يشبه الرمز الخاص بك بشكل مثير للريبة هذا المثال الذي يشير إلى ssl: // في نظام اسم المضيف.

53
crb

أنا لا أوصي بريد الكمثرى. لم يتم تحديثه منذ عام 2010. اقرأ أيضًا الملفات المصدر ؛ شفرة المصدر قديمة تقريبًا ، مكتوبة بنمط PHP 4 وتم نشر العديد من الأخطاء/الأخطاء (Google it). أنا أستخدم Swift Mailer.

Swift Mailer يدمج في أي تطبيق ويب مكتوب بـ PHP 5 ، مما يوفر طريقة مرنة وأنيقة موجهة للكائنات لإرسال رسائل البريد الإلكتروني مع العديد من الميزات.

إرسال رسائل البريد الإلكتروني باستخدام SMTP أو sendmail أو postfix أو تطبيق نقل مخصص خاص بك.

خوادم الدعم التي تتطلب اسم المستخدم وكلمة المرور و/أو التشفير.

حماية من هجمات حقن رأس دون تجريد محتوى بيانات الطلب.

إرسال MIME المتوافقة مع HTML/رسائل البريد الإلكتروني متعددة الأجزاء.

استخدم الإضافات التي تحركها الأحداث لتخصيص المكتبة.

تعامل مع المرفقات الكبيرة والصور المضمنة/المدمجة مع انخفاض استخدام الذاكرة.

إنه مصدر مجاني ومفتوح يمكنك تنزيل Swift Mailer وتحميله على الخادم الخاص بك. (يتم نسخ قائمة الميزات من موقع المالك).

المثال العملي لـ Gmail SSL/SMTP و Swift Mailer موجود هنا ...

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

آمل أن يساعد هذا. ترميز سعيد ... :)

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 يمكن إرسال البريد الإلكتروني باستخدام خوادم خارجية.

فيما يلي مثال يوضح كيفية استخدام خادم 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));
20
Pekka 웃

يحتاج الرمز كما هو موضح في السؤال إلى تغييرين

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

المنفذ 465 مطلوب للاتصال SSL.

14
s01ipsist

إرسال بريد باستخدام مكتبة phpMailer من خلال Gmail. الرجاء تنزيل ملفات المكتبة من 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

يتطلب Gmail المنفذ 465 ، كما أنه رمز من phpmailer :)

4
sandeep

لتثبيت Mail.php الخاص بـ PEAR في أوبونتو ، قم بتشغيل مجموعة الأوامر التالية:

    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
4
Nahid

كان لي هذه المشكلة أيضا. قمت بتعيين الإعدادات الصحيحة وقمت بتمكين التطبيقات الأقل أمانًا ، لكنها لم تنجح. أخيرًا ، قمت بتمكين هذا https://accounts.google.com/UnlockCaptcha ، وقد نجحت هذه الميزة بالنسبة لي. آمل أن يكون هذا يساعد شخص ما.

3
Strategist

لدي حل لحسابات GSuite التي لا تحتوي على الإصلاح "@ gmail.com". أعتقد أيضًا أنها ستنجح في حسابات GSuite مع @ gmail.com ولكن لم تجربها. أولاً ، يجب أن يكون لديك الامتيازات لتغيير خيار "allos¿w تطبيق أقل أمانًا" لحساب GSuite الخاص بك. إذا كان لديك الامتيازات (يمكنك التحقق من إعدادات الحساب-> الأمان) ، فعليك إلغاء تنشيط "مصادقة عامل خطوتين" ، انتقل إلى نهاية الصفحة وتعيين "نعم" للسماح للتطبيقات الأقل أمانًا. هذا كل شئ. إذا لم يكن لديك امتيازات لتغيير هذه الخيارات ، فلن يعمل حل سلسلة الرسائل هذه. حدد https://support.google.com/a/answer/6260879؟hl=ar لإجراء تغييرات على خيار "السماح بأقل ...".

0
Diego Andrés Díaz Espinoza