我正在尝试使用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"
我不知道为什么没有发送电子邮件......
答案 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 )