Symfony2.2 Swiftmailer无法在AWS-EC2服务器站点中运行

时间:2013-07-04 07:27:26

标签: mysql symfony doctrine-orm phpmyadmin php-5.3

我正在研究一个symfony 2.2项目网站,我在其中使用swift邮件发送邮件; 在Parameter.yml中,配置如下:

database_driver:   pdo_mysql
database_host:     localhost
database_port:     null
database_name:     My_Project_Name
database_user:     username
database_password: userpass

mailer_transport:  gmail
mailer_host:       smtp.gmail.com
mailer_encryption: ssl
mailer_auth_mode:  login
mailer_user:       my_user_name@gmail.com
mailer_password:   my_gmail_account_password

locale:            en
secret:            my_secret
database_path:     null

我的邮件如下:

       $message = \Swift_Message::newInstance()
        ->setSubject("Subject_description")
        ->setFrom("my_user_name@gmail.com")
        ->setTo("destination_email@maildomain.com")
        ->setBody("message_body");

    $this->mailer->send($message);

它在localhost中工作得很好但是当项目站点在AWS-EC2服务器上运行时,它没有给出任何错误并给出关于成功完全发送邮件的通知消息,但实际上在destination_email@maildomain.com上没有收到任何电子邮件。我不知道我的配置有什么问题?

如果有任何人对这个问题有所了解,请告诉我,我们将非常感谢!

1 个答案:

答案 0 :(得分:0)

通过许多帮助链接提取我的想法后,我终于找到了解决方案,如下所示:

# app/config/parameter.yml
swiftmailer:
transport:  smtp
host:       email-smtp.us-east-1.amazonaws.com
username:   AWS_ACCESS_KEY
password:   AWS_SECRET_KEY
encryption: tls
port:       25

并在梅勒:

 $renderedLines = explode("\n", trim($renderedTemplate));
    $subject = $renderedLines[0];
    $body = implode("\n", array_slice($renderedLines, 1));
    $transport = \Swift_SmtpTransport::newInstance( 'email-smtp.us-east-1.amazonaws.com', 
    25, 
    'tls')->setUsername('aws_key')->setPassword('aws_secret');
    $innerMailer = \Swift_Mailer::newInstance($transport);
    $message = \Swift_Message::newInstance()
        ->setSubject('My_Project_Title_Subject')
        ->setFrom(array('my_mail@domail.com' => 'Reference Name'))
        ->setTo("destination_mail@domail.id")
        ->setBody($body, 'text/html');

    $innerMailer->send($message);

终于工作了!

希望它会帮助别人!