0

我正在开发一个 symfony 2.2 项目站点,在该站点中我使用 swift mailer 发送邮件;在 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 上没有收到任何电子邮件。不知道我的配置有什么问题?

如果有人对这个问题有任何想法,请告诉我,我们将不胜感激!

4

1 回答 1

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

在 Mailer 中:

 $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);

它终于起作用了!

希望它会帮助别人!

于 2013-07-12T09:15:42.613 回答