محاولة إرسال البريد باستخدام Swift Mailer ، Gmail SMTP ، PHP

StackOverflow https://stackoverflow.com/questions/3536836

  •  30-09-2019
  •  | 
  •  

سؤال

ها هو رمزتي:

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

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465)
  ->setUsername('me@ff.com')
  ->setPassword('pass');

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('me@ff.com' => 'MY NAME'))
  ->setTo(array('you@ss.com' => 'YOU'))
  ->setBody('This is the text of the mail send by Swift using SMTP transport.');
//$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png');  
//$message->attach($attachment);
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>

بعد الجري حصلت على هذا الخطأ ...

خطأ فادح: استثناء غير ملتقم "Swift_TransportException" مع رسالة "رمز الاستجابة المتوقع 220 ولكن حصل على رمز" ، مع رسالة "" "/home/sitenyou/public_html/swift/lib/classes/swift/transport/abstractsmtptransport.php:406

Stack trace: 
#0 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(299): Swift_Transport_AbstractSmtpTransport->_assertResponseCode('', Array) 
#1 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(107): Swift_Transport_AbstractSmtpTransport->_readGreeting() 
#2 /home/sitenyou/public_html/Swift/lib/classes/Swift/Mailer.php(74): Swift_Transport_AbstractSmtpTransport->start() 
#3 /home/sitenyou/public_html/sgmail.php(16): Swift_Mailer->send(Object(Swift_Message)) 
#4 {main} thrown in /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 406
هل كانت مفيدة؟

المحلول

يتطلب SMTP من Gmail التشفير. يستخدم:

Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl");

نصائح أخرى

هناك مفقود معلمة SSL ، يجب أن يكون شيئًا من هذا القبيل

Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")

تم اختباره ويعمل بشكل جيد

Swift SmtpTransport - رمز (أرسل بريدًا إلكترونيًا)

SMTP من Gmail هو: smtp.googlemail.com

الرمز الكامل:

<?php
$pEmailGmail = 'xxxx@gmail.com';
$pPasswordGmail = '********';
$pFromName = 'MundialSYS.com'; //display name

$pTo = 'xxxxxx@xxxx.xxx'; //destination email
$pSubjetc = "Hello MundialSYS"; //the subjetc 
$pBody = '<html><body><p>Hello MundialSYS</p></html></body>'; //body html

$transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, 'ssl')
            ->setUsername($pEmailGmail)
            ->setPassword($pPasswordGmail);

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

$mEmail = Swift_Message::newInstance();
$mEmail->setSubject($pSubjetc);
$mEmail->setTo($pTo);
$mEmail->setFrom(array($pEmailGmail => $pFromName));
$mEmail->setBody($pBody, 'text/html'); //body html

if($mMailer->send($mEmail) == 1){
    echo 'send ok';
}
else {
    echo 'send error';
}
?>

لقد تمكنت من الحصول على هذا العمل بدون SSL ، إليك كيف:

$transport = Swift_SmtpTransport::newInstance('tls://smtp.gmail.com', 465)
            ->setUsername('contact@columbussoft.com')
            ->setPassword('password');
$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance($subject)
            ->setFrom(array($emailTo=>$name))
            ->setTo(array($emailTo=>'Neo Nosrati'))
            ->addPart($body,'text/plain')
            ->setReturnPath('other@columbussoft.com');

لا أستطيع أن أكون متأكدًا ، لكنني أعتقد أن منفذ Gmail هو 587 باستخدام TLS ، وهو ليس SSL ، ولكن إصدار أحدث منه. يجب عليك التحقق من ذلك ، لأنني أعتقد أنك تضع رمز البناء الخاطئ.

حظا سعيدا!

أنا أستخدم حزمة "الرسائل Swift Mailer" في Laravel 3 ولدي نفس المشكلة. بعد بعض الاختبارات ، في حالتي ، كان الحل هو تعيين نفس عنوان البريد الإلكتروني الذي استخدمته في مصادقة SMTP على المعلمة "من".

كنت أحاول استخدام عنوان مختلف وكان ذلك يؤدي "Swiftmailer المتوقع رمز الاستجابة 220 ولكن حصل على رمز مع رسالة" خطأ.

امل ان يساعد.

لقد حصلت على نفس الخطأ من قبل وأضفت معلمة "SSL" في SWIFT_SMTPTRANSPORT :: NewInstance ('SMTP.GMAIL.com "، 465 ،" SSL ") مثل Osos.

إنها تعمل!! شكرا

هذا هو الكود الخاص بي:

<?php
require_once 'swift/lib/swift_required.php';

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

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('THIS IS THE SUBJECT')
  ->setFrom(array('XXXXXXX@gmail.com' => 'YOUR NAME'))
  ->setTo(array('XXXXXXX@gmail.com' => 'YOU'))
  ->setBody('This is the text of the mail send by Swift using SMTP transport.');
//$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png');  
//$message->attach($attachment);
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>

لتطبيقات Google ، بالإضافة إلى الإعداد إلى المنفذ 465 و SSL على النحو الموصى به في الإجابة المقبولة ، قد تضطر إلى ذلك تمكين السماح بتطبيقات أقل أمانًا الإعداد ، حسب https://stackoverflow.com/a/25238515/947370

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top