Doctrine:通过SwiftMailer发送假脱机电子邮件

时间:2014-05-27 08:29:48

标签: php email symfony doctrine-orm swiftmailer

我正在尝试使用Symfony上的SwiftMailer软件包发送电子邮件。我可以通过命令发送邮件:

swiftmailer:email:send    
From: myemail
To: emailRecipient
Subject: Hi
Body: This is a test
Sent 1 emails
Done.

提交表单后,我想发送电子邮件。我可以在我的生产服务器上看到它们:

/home/sga/www/app/spool/default

所以我尝试使用以下方式发送它们:

swiftmailer:spool:send --env=prod

最后我得到了:

Processing default mailer... 0 emails sent
Done.

swiftmailer:debug"
[swiftmailer] Current mailers
Name                     Transport Spool Delivery Single Address
default (default mailer) smtp      YES   YES   

我的config.yml文件:

# Swiftmailer Configuration
swiftmailer:
    transport: smtp
    host:      myhost
    username:  ~
    password:  ~
    spool:
        type: file
        path: "%kernel.root_dir%/spool"

我不知道为什么没有发送电子邮件......

2 个答案:

答案 0 :(得分:1)

最后我改变了传输:

swiftmailer:
transport: sendmail
host:      /usr/bin/sendmail
username:  ~
password:  ~
spool:     { type: memory }

我的电子邮件是在不使用Symfony命令的情况下发送的,但我仍然遇到了向gmail地址发送电子邮件失败的问题。

答案 1 :(得分:0)

事实证明我的Gmail收件人地址导致了这一点。 也许gmail将我的电子邮件地址归类为垃圾邮件或拒绝发送我的邮件。但是我的gmail垃圾邮件文件夹上什么都没有...

编辑:

它拒绝为所有没有相同主机的地址发送电子邮件。 例如:它只发送@ example.com的电子邮件 所以:

->setFrom('x.y@example.com')
->setTo('x.y@gmail.com')
doesn't work 

但是:

->setFrom('x.y@example.com')
->setTo('x.y@example.com')
is working

作为剩余部分:

$transport = \Swift_SmtpTransport::newInstance("smtp.example.com", 25);
    $transport->setUsername("xxx");
    $transport->setPassword("YYYY");

    $mailer = \Swift_Mailer::newInstance($transport);

    $message = \Swift_Message::newInstance()
            ->setSubject($subject)
            ->setContentType("text/plain; charset=UTF-8")
            ->setFrom('x.y@example.com')
            ->setTo('x.y@gmail.com')
            ->setBody($body, 'multipart/alternative')
            ->addPart($body, 'text/html')
            ->addPart($bodyPlain, 'text/plain');
    if (!$mailer->send($message, $failures)) {
        echo "Failures:";
        print_r($failures);
    }

我失败了:

Failures:Array ( [0] => x.y@gmail.com )