1

我有以下 swiftmailes 配置

# config.yml
swiftmailer:
    transport: stmp
    host:      mail.domain.com
    port:      25
    username:  myuser
    password:  mypass
    spool:
        type: file
        path: "%kernel.cache_dir%/swiftmailer/spool"
    logging:  "%kernel.debug%"

以及以下用于发送消息的代码

$subject = "TESTING";

$mailer = $this->getContainer()->get('mailer');
$message = \Swift_Message::newInstance()
    ->setSubject($subject)
    ->setFrom("noreply@domain.com")
    ->setTo("julian.reyes.escrigas@gmail.com")
    ->setBody("Body message");

$mailer->send($message);

发送消息后,这可以建立,app/cache/dev/swiftmailer/spool但是当我调用命令时

$ app/console swiftmailer:spool:send --message-limit=10 --env=dev

假脱机中的所有消息都会消失,但不会发送给接收者。

注意:我已经尝试使用客户端(thunderbird)进行 STMP 设置并正常工作


测试

出于测试目的,我尝试在没有队列的情况下直接发送消息

$message = \Swift_Message::newInstance()
    ->setSubject($subject)
    ->setFrom("noreply@domain.com")
    ->setTo("julian.reyes.escrigas@gmail.com")
    ->setBody("Body message");

$mailer->send($message);

$transport  = $this->getContainer()->get('swiftmailer.transport.real');
$transport->start();

// but count alwasy is zero
$count = $transport->send($message);

我已经尝试了 config.yml 文件中的所有组合

auth_mode:  plain / login / null
encryption: tsl / ssl / null
port: 25 / 465

从 symfony profiler 我得到

Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=utf-8
MIME-Version: 1.0
Date: Tue, 04 Jun 2013 14:33:12 -0500
Message-ID: <1370374392.51ae40f8b6202@localtest>
From: noreply@mydomain.com
Subject: TEST
To: julian.reyes.escrigas@gmail.com
Mensaje de prueba de Texto

测试 2

我开始认为这可能是我安装的版本的问题。我试过直接创建 SMTP 传输但没有成功

$message = \Swift_Message::newInstance()
    ->setSubject("TEST")
    ->setFrom("noreply@domain.com")
    ->setTo(array("julian.reyes.escrigas@gmail.com"))
    ->setBody("Mensaje de prueba de Texto");


$transport = \Swift_SmtpTransport::newInstance('mail.domain.com', 25)
    ->setUsername('noreply@domain.com')
    ->setPassword('THEPASS');

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

$transport->start();
// ZERO again
$output->writeln(sprintf("Mensajes enviados: %s", $mailer->send($message)));

注意 2:我已经尝试使用 PHpMailer 并使用相同的设置发送邮件没有问题,但我想使用 swiftmailer

注意 3:使用本地设置在我的托管服务提供商上进行测试可以正常工作。但是如果不使用棘手的 ssh 隧道,我就无法从自己的笔记本电脑(开发环境)进行测试

transport: mail
host: localhost
username: ~
password: ~
  • PHP 5.4.6
  • Symfony 2.2.2
  • Swiftmailer 5.0
4

2 回答 2

4

你确定这不仅仅是一个错字吗?

transport: stmp

=>

transport: smtp
于 2013-09-19T07:24:40.970 回答
0

如果有人要找答案:尝试在方法中设置有效的电子邮件地址setFrom();在我的情况下,像“noreply@domain.com”这样的虚拟电子邮件被假脱机,但传递失败。在指定有效地址后,它发送了一封电子邮件(终于!)。

于 2014-11-06T10:33:52.260 回答