EDIT: vì tôi không kiểm tra mã, bạn cũng nên chỉ định lớp vận chuyển nếu bạn không sử dụng vùng chứa dịch vụ để nhận được cá thể của bưu phẩm. Nhìn vào: http://swiftmailer.org/docs/sending.html
Bạn đang làm sai. Về cơ bản bạn muốn có một dịch vụ , không phải là một lớp mở rộng Controller
. Nó không hoạt động vì vùng chứa dịch vụ không có sẵn trong hàm SendMail()
.
Bạn phải đưa vùng chứa dịch vụ vào trình trợ giúp tùy chỉnh của riêng bạn để gửi email. Một vài ví dụ:
namespace Blogger\Util;
class MailHelper
{
protected $mailer;
public function __construct(\Swift_Mailer $mailer)
{
$this->mailer = $mailer;
}
public function sendEmail($from, $to, $body, $subject = '')
{
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBody($body);
$this->mailer->send($message);
}
}
Để sử dụng nó trong một hành động khiển:
services:
mail_helper:
class: namespace Blogger\Util\MailHelper
arguments: ['@mailer']
public function sendAction(/* params here */)
{
$this->get('mail_helper')->sendEmail($from, $to, $body);
}
Hoặc nơi khác mà không cần truy cập vào container dịch vụ:
class WhateverClass
{
public function whateverFunction()
{
$helper = new MailerHelper(new \Swift_Mailer);
$helper->sendEmail($from, $to, $body);
}
}
Hoặc trong một dịch vụ tùy chỉnh truy cập vùng chứa:
namespace Acme\HelloBundle\Service;
class MyService
{
protected $container;
public function setContainer($container) { $this->container = $container; }
public function aFunction()
{
$helper = $this->container->get('mail_helper');
// Send email
}
}
services:
my_service:
class: namespace Acme\HelloBundle\Service\MyService
calls:
- [setContainer, ['@service_container']]
Tôi không hiểu. Đoạn mã đó có phải là giải pháp hiện tại của bạn nhưng bạn muốn chuyển thư đến một nơi khác? Nếu đó là chính xác, bạn có lẽ nên đọc về tiêm dịch vụ vào các lớp học tùy chỉnh của bạn: http://stackoverflow.com/questions/6124444/how-can-i-access-a-service-outside-of-a-controller-with- symfony2 – geca
Tôi đã sử dụng FOSUserBundle và FOSFacebookbundle những gì tôi muốn khi người dùng đăng nhập thành công với tài khoản facebook tôi muốn gửi email cho người dùng bằng mật khẩu của mình để anh ấy có thể đăng nhập bằng mật khẩu email đó. .... –