2015-03-01 13 views
5

Tôi hiện không nhận được email bằng cách sử dụng cấu hình dưới đây và đã tự hỏi nếu có gì đó liên quan đến việc thiết lập của tôi có thể thiếu một số thứ hoặc nó không hoạt động trên máy chủ MAMP localhost?Có thể sử dụng swiftMailer trên máy chủ cục bộ để gửi email không?

chính-local.php trong thư mục config chung

'mailer' => [ 
     'class' => 'yii\swiftmailer\Mailer', 
     'viewPath' => '@common/mail', 
     // send all mails to a file by default. You have to set 
     // 'useFileTransport' to false and configure a transport 
     // for the mailer to send real emails. 
     'useFileTransport' => true, 
    ], 

Và sau đó gửi email (mà không hiển thị một thông báo thành công)

public function submitreview($email) 
{ 
    //return Yii::$app->mailer->compose(['html' => '@app/mail-templates/submitreview']) 
    return Yii::$app->mailer->compose() 
     ->setTo($email) 
     ->setFrom([$this->email => $this->name]) 
     ->setSubject($this->title) 
     ->setTextBody($this->description) 
     ->attachContent($this->file) 
     ->send(); 
} 
+0

swiftMailer sẽ hoạt động trên localhost, nhưng bạn sẽ cần phải chỉ định các máy chủ thư ISP của bạn và có thể sử dụng tên người dùng và mật khẩu với chúng. Tôi sẽ tham khảo http://stackoverflow.com/questions/4485635/php-swiftmailer-localhost-test-setup hoặc https://www.google.com.au/#q=swiftmailer+localhost – Mayhem

+0

Nhưng nếu bạn muốn sử dụng localhost như một máy chủ thư, không lưu trữ trang web của bạn trên máy chủ cục bộ và gửi thư qua các máy chủ thư gmail. Sau đó, bạn sẽ cần một cái gì đó giống như thư thủy ngân để hoạt động như một máy chủ thư. – Mayhem

Trả lời

2

Bạn có thể gửi mail thông qua localhost trong Yii2 với cấu hình sau.

'mailer' => [ 
     'class' => 'yii\swiftmailer\Mailer', 
     'useFileTransport' => false, 
     'transport' => [ 
      'class' => 'Swift_SmtpTransport', 
      'host' => 'smtp.gmail.com', 
      'username' => 'ENTER_EMAIL_ADDRESS_HERE', 
      'password' => 'ENTER_PASSWORD', 
      'port' => '587', 
      'encryption' => 'tls', 
     ], 
    ] 

và trong điều khiển của bạn

\Yii::$app->mail->compose('your_view', ['params' => $params]) 
    ->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail']) 
    ->setTo('[email protected]') 
    ->setSubject('This is a test mail ') 
    ->send(); 
+1

Máy chủ cục bộ này như thế nào? Phương tiện bạn đã liệt kê là gmail. – DrewT

2

Tôi chỉ đơn giản là đang sử dụng gmail để thử nghiệm, sử dụng tập tin php này để gửi thư từ máy chủ địa phương. Khi bạn đang đi sản xuất, hãy thay thế tệp truyền tải bằng thông tin đăng nhập ban đầu của bạn.

kết quả $ sẽ echo 1, nếu mail đã gửi thành công

<?php 
      $subject="Testing Mail"; 
      $body="<h2>This is the body</h2>"; 
      $to="*******@gmail.com"; //this is the to email address 

      require_once 'swiftmailer/swift_required.php'; 
      // Create the mail transport configuration 

      $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')->setUsername('######')->setPassword('######'); 
      //$transport = Swift_MailTransport::newInstance(); 
      $message = Swift_Message::newInstance() 
      ->setSubject($subject) 
      ->setFrom(array('######@gmail.com')) 
      ->setTo(array($to)) 
      ->setBody($body,'text/html'); 

      //send the message 
      $mailer = Swift_Mailer::newInstance($transport);   
      $result=$mailer->send($message); 

    ?> 
0

Khi useFileTransport được thiết lập để true (mặc định trong môi trường phát triển) sau đó mail được lưu dưới dạng tập tin trong thư mục 'chạy'.

Ví dụ, nếu bạn đang sử dụng mẫu bắt đầu tiên tiến và đăng ký như một người dùng khi trong backend của trang web (Và sử dụng một phần mở rộng sẽ gửi email đăng ký sử dụng), email đăng ký sẽ được lưu trong /backend/runtime/mail

Các vấn đề liên quan