2015-04-07 14 views
10

क्या किसी के पास एक कामकाजी उदाहरण है कि मैं लैरवेल 5 में PHPMailer के साथ कैसे काम कर सकता हूं? लार्वेल 4 में यह उपयोग करने के लिए शांत था लेकिन एल 5 में एक ही विधि काम नहीं करती है।लैरवेल 5 और PHPMailer

जोड़ा गया composer.json में: यहाँ यह है कि मैं क्या L4 में किया था है

"phpmailer/phpmailer": "dev-master", 

और मैं इसे इस तरह का उपयोग किया है controller में:

$mail = new PHPMailer(true); 
try { 
    $mail->SMTPAuth(...); 
    $mail->SMTPSecure(...); 
    $mail->Host(...); 
    $mail->port(...); 

    . 
    . 
    . 

    $mail->MsgHTML($body); 
    $mail->Send(); 
} catch (phpmailerException $e) { 
    . 
    . 
} catch (Exception $e) { 
    . 
    . 
} 

लेकिन यह काम नहीं करता L5। कोई उपाय? धन्यवाद!

+0

परिभाषित करें "काम नहीं करता"। कोई विशिष्ट त्रुटि, अपवाद, कुछ? –

+0

आप PHPMailer का उपयोग पहली जगह क्यों करना चाहते हैं? लैरवेल स्विफ्टमेलर का अच्छा अंतर्निहित कार्यान्वयन है। –

+0

हाँ, मैं इसका उपयोग करूंगा लेकिन यह एक विरासत कोड है जिसे मुझे पहले चरण में 4.2 से 5 तक अपग्रेड करना है। उसके बाद मैं इसे स्विफ्टमेलर में बदल दूंगा। –

उत्तर

9

वैसे मुझे कई गलतियां हैं जो मुझे लगता है ... यह लैरवेल 5 में पीएचपीमेलर के साथ मेल भेजने का एक कामकाजी उदाहरण है। बस इसका परीक्षण किया।

 $mail = new \PHPMailer(true); // notice the \ you have to use root namespace here 
    try { 
     $mail->isSMTP(); // tell to use smtp 
     $mail->CharSet = "utf-8"; // set charset to utf8 
     $mail->SMTPAuth = true; // use smpt auth 
     $mail->SMTPSecure = "tls"; // or ssl 
     $mail->Host = "yourmailhost"; 
     $mail->Port = 2525; // most likely something different for you. This is the mailtrap.io port i use for testing. 
     $mail->Username = "username"; 
     $mail->Password = "password"; 
     $mail->setFrom("[email protected]", "Firstname Lastname"); 
     $mail->Subject = "Test"; 
     $mail->MsgHTML("This is a test"); 
     $mail->addAddress("[email protected]", "Recipient Name"); 
     $mail->send(); 
    } catch (phpmailerException $e) { 
     dd($e); 
    } catch (Exception $e) { 
     dd($e); 
    } 
    die('success'); 

और निश्चित रूप से, आप मैं laravel SwiftMailer में बनाया गया पसंद करेंगे depency

composer.json को हालांकि जोड़ने के बाद एक संगीतकार अद्यतन करने की जरूरत है,। http://laravel.com/docs/5.0/mail

+0

जैसा कि मैंने देखा, मेरा उदाहरण बिल्कुल * * +% को छोड़कर वही है! रूट नेमस्पेस बैकस्लैश चार ... :) मेरी आंखें बस इसे छोड़ दी गईं और मुझे नहीं पता क्यों ... :(तो धन्यवाद, यह अब काम कर रहा है। और हाँ, मैं कोड को लार्वेल के इन-बिल्ट मेलर में बदल दूंगा लेकिन यह है एक विरासत कोड और सबसे पहले मुझे 4.2 से 5 तक अपग्रेड करना होगा और फिर मैं कुछ सुधार करूँगा। धन्यवाद! –

+0

जब मैंने कई गलतियों को कहा, तो मैंने सोचा कि आप $ मेल-> होस्ट = "yourmailhost जैसी चीजों का उपयोग कर रहे थे "; असाइनमेंट के रूप में नहीं बल्कि कार्य $ मेल-> होस्ट (" yourmailhost ") के रूप में; लेकिन मैं देखता हूं, आप केवल यह इंगित करना चाहते थे कि आपने आम तौर पर क्या किया और मुझे इसे सही वाक्यविन्यास के रूप में नहीं देखा जाना चाहिए था।वैसे भी आपकी मदद करने में खुशी हुई;) –

+0

क्या कोई जवाब दे सकता है कि मैं उसी सेटिंग में NONSSL का उपयोग कैसे कर सकता हूं? एसएसएल लार्वेल का उपयोग किए बिना त्रुटि देता है, और मेरे पास एसएसएल क्रेडेंशियल्स –

4

चरण 1: खुले कमांड प्रॉम्प्ट और चलाने के आदेश के बाद

composer require phpmailer/phpmailer 

चरण 2: अपने नियंत्रक में निम्नलिखित जोड़ने के लिए या जहाँ आप मेल समारोह

use PHPMailerAutoload; 
use PHPMailer; 

उपयोग करना चाहते हैं चरण 3: मेल

भेजने के लिए निम्न कोड का उपयोग करें
$mail = new PHPMailer; 

// notice the \ you have to use root namespace here 
try { 
$mail->isSMTP(); // tell to use smtp 
$mail->CharSet = “utf-8”; // set charset to utf8 
$mail->Host = $_SERVER[‘MAIL_HOST_NAME’]; 
$mail->SMTPAuth = false; 
$mail->SMTPSecure = false; 
$mail->Port = 25; // most likely something different for you. This is the mailtrap.io port i use for testing. 
$mail->Username = “”; 
$mail->Password = “”; 
$mail->setFrom(“[email protected]”, “examle Team”); 
$mail->Subject = “examle”; 
$mail->MsgHTML(“This is a test new test”); 
$mail->addAddress(“[email protected]”, “admin”); 
$mail->addAddress(“[email protected]”, “test”); 
$mail->addReplyTo(‘[email protected]’, ‘Information’); 
$mail->addBCC(‘[email protected]’); 
$mail->addAttachment(‘/home/kundan/Desktop/abc.doc’, ‘abc.doc’); // Optional name 
$mail->SMTPOptions= array(
‘ssl’ => array(
‘verify_peer’ => false, 
‘verify_peer_name’ => false, 
‘allow_self_signed’ => true 
) 
); 

$mail->send(); 
} catch (phpmailerException $e) { 
dd($e); 
} catch (Exception $e) { 
dd($e); 
} 
dd(‘success’); 

अधिक जानकारी के लिए: यहाँ जाएँ: http://programmerlab.com/question/how-to-use-phpmailer-in-laravel/

+0

आपने मेरी PHP टिप्पणियों को बदलने की कोशिश भी नहीं की .... –

0

Laravel 5.5 या ऊपर, तो आप निम्न चरणों

अपने laravel आवेदन पर PHPMailer स्थापित करने की जरूरत है।

composer require phpmailer/phpmailer 

फिर आपके नियंत्रक को मिला जहां आप phpmailer का उपयोग करना चाहते हैं।

<?php 
namespace App\Http\Controllers; 

use PHPMailer\PHPMailer; 

class testPHPMailer extends Controller 
{ 
    public function index() 
    { 
     $text    = 'Hello Mail'; 
     $mail    = new PHPMailer\PHPMailer(); // create a n 
     $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only 
     $mail->SMTPAuth = true; // authentication enabled 
     $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail 
     $mail->Host  = "smtp.gmail.com"; 
     $mail->Port  = 465; // or 587 
     $mail->IsHTML(true); 
     $mail->Username = "[email protected]"; 
     $mail->Password = "testpass"; 
     $mail->SetFrom("[email protected]", 'Sender Name'); 
     $mail->Subject = "Test Subject"; 
     $mail->Body = $text; 
     $mail->AddAddress("[email protected]", "Receiver Name"); 
     if ($mail->Send()) { 
      return 'Email Sended Successfully'; 
     } else { 
      return 'Failed to Send Email'; 
     } 
    } 
} 
संबंधित मुद्दे