Sendmail and SwiftMailerBundle on Symfony2 - symfony

Hello I am using Symfony2 and the SwiftMailerBundle, when i was using gmail like my transport, was so easy, but now i need use sendmail.
Here is the part of my parameters.yml
mailer_transport: sendmail
mailer_host: /usr/sbin/sendmail
mailer_user: no-replay#mysite.com
mailer_password: null
And here is the config.yml:
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }

// Create the Transport
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/exim -bs');
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
as per the documentation :
http://swiftmailer.org/docs/sending.html#using-the-sendmail-transport
you need to create a Swift_SendmailTransport first then instantiate your mailer with it.
This question may help : Configure Symfony2/Swiftmailer to use "sendmail -t"

Related

mailer does not work on prod with the same settings as on dev

Basically after changing from Dev to Prod on Symfony, the mailer stopped sending mails to given email.
Posting few settings from my Symfony:
parameters:
mailer_transport: smtp
mailer_port: 465
mailer_host: myhost
mailer_user: mylogin
mailer_password: mypw
config:
# Swiftmailer Configuration
swiftmailer:
transport: '%mailer_transport%'
host: '%mailer_host%'
port: '%mailer_port%'
username: '%mailer_user%'
password: '%mailer_password%'
spool: { type: memory }
logging: true
# delivery_addresses: ['']
It looks correctly for me. The website uses SSL if that matters. Is there anything to change/edit? Do you need any other code to assist me with?

i cant send email symfony3 neither to confirm registration or for a simple email

Im developping a web application using symfony3 , i'm trying to send confirmation emails using swiftmailer , i want to use confirmation mails and resetting also send direct emails between the users of my app.
Unfortunately i didn't managed to do it yet.
Here is my configs files also the code that i use to send direct mails
Here is my parameter.yml
mailer_transport: gmail
mailer_host: smtp.gmail.com
mailer_auth_mode: login
mailer_user: ***********
mailer_password: ********
mailer_encryption: ssl
Here is my code config.yml
swiftmailer:
transport: '%mailer_transport%'
host: '%mailer_host%'
encryption: ssl
username: '%mailer_user%'
auth_mode: login
password: '%mailer_password%'
spool: { type: memory }
fos_user:
db_driver: orm
firewall_name: main
user_class: AppBundle\Entity\User
registration:
confirmation:
enabled: true
from_email:
address: *****e#gmail.com
sender_name: ........
from_email:
address: ******#gmail.com
sender_name: ......
my code to send email
$mailer = $this->get('mailer');
$message = $mailer->createMessage()
->setSubject("Objet")
->setFrom(array('................' => "...."))
->setTo('..........)
->setBody("Hi");
$mailer->send($message);
Here is my parameters file:
mailer_transport: gmail
mailer_host: gmail
mailer_user: ************
mailer_password: **********
And here is my config file section for swiftmailer:
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
I use dual verification in Gmail so I generated a application specific password,
this is where you can see how to set one.
This is how I send emails from my controller:
private function sendConfirmationEmail($user)
{
$token = $user->getEmailConfirmationToken();
$subject = 'Email Confirmation';
$label = 'Confirm Email';
$email = $user->getEmail();
$href = "www.mysymfonyproject.com/app_dev.php/confirm?token=" . $token;
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom('myemail#gmail.com')
->setTo( $email )
->setBody(
$this->renderView(
'Emails/confirm.html.twig',
array('href' => $href)
),
'text/html'
);
$this->get('mailer')->send($message);
return true;
}
Also, I see something slightly odd in your config file, it seems you set your "auth_mode" and "encryption" twice both in your parameters.yml and your config.yml.
Your config.yml file includes your parameters.yml file which is like your parameters.yml get copy-pasted to the config file and in the config file you have mailer settings where some values are pointers to pre set values and other are just values, %mailer_password% points to mailer_password parameter value which gets included from the parameters file. It's nothing complicated it's just YML and inclusion. Since you already defined all parameters in the parameters.yml all you need to do in config.yml is to point to them and you can do so by changing your config.yml section for mailer to look like this:
transport: "%mailer_transport%"
host: "%mailer_host%"
encryption: "%mailer_encryption%"
username: "%mailer_user%"
auth_mode: "%mailer_auth_mode%"
password: "%mailer_password%"
spool: { type: memory }
Or just copy my application settings and give it a try. A YML developers greeting "Good Luck :)"
PS. YML has to have proper indentation and the suggested edit of your config file is probably not indented correctly so indent it manually.

swiftmailer does not send emails

I want to send emails using symfony, but the swiftmailer does not send out any emails. I even dont get error reportings or anything else. Thats my code:
$mail = \Swift_Message::newInstance()
->setSubject('Subject')
->setTo('test#example.com') #this is replaced by real email of course
->setFrom('test#example.com')
->setBody('Testbody');
$this->get('mailer')->send($mail);
Thats the config:
swiftmailer:
default_mailer: mailer
mailers:
mailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
#spool: { type: memory }
I even tried to set the host to an address that does not exist, but I dont get any error from swiftmailer or symfony.
I tried to find the files for the lib, but there is no Swift_Message or newInstance anywhere in the symfony files, strange
use this code
$message = \Swift_Message::newInstance()
->setSubject('Validation de votre commande')
->setFrom('test#example.com')
->setTo('test#example.com')
->setBody('Testbody');
->setCharset('utf-8')
->setContentType('text/html')
->setBody('test');
$this->get('mailer')->send($message);
in app/config/parametres.yml :
mailer_transport: gmail
mailer_host: smtp.gmail.com
mailer_user: your mail
mailer_password: your password mail
in app/config/config.yml :
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
I had seen someone with the same problem. For him the problem was with the spool queue. It is solved by either disabling spool explicitly:
spool:
enabled:false
or flushing the queue in the code:
$this->get('mailer')->send($mail);
$spool = $this->get('mailer')->getTransport()->getSpool();
$spool->flushQueue($this->get('mailer')->getTransport());
Hope it works!

Configuration to send Email with Symfony herberged on OVH

I am trying to send email with my Symfony Application. My goal is to send the emails either with a gmail account or from the server's email account.
After some research I succed to send emails from my local server wamp. The configuration is the following :
swiftmailer:
transport: %mailer_transport%
encryption: %mailer_encryption%
auth_mode: %mailer_auth_mode%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
spool: { type: memory }
mailer_transport: smtp
mailer_encryption: ssl
mailer_auth_mode: login
mailer_host: smtp.gmail.com
mailer_transport: gmail
mailer_user: myaccount
mailer_password: mypassword
I tried this configuration on my OVH server but it doesn't work. I looked in the OVH server logs but didn't find any error message.
I also tried some configuration with my server email account from my local server WAMP without success.
Here is one example :
swiftmailer:
transport: %mailer_transport%
auth_mode: %mailer_auth_mode%
host: %mailer_host%
port: %mailer_port%
username: %mailer_user%
password: %mailer_password%
spool: { type: memory }
mailer_transport: smtp
mailer_auth_mode: login
mailer_host: smtp.mydomain.be
mailer_port: 587
mailer_user: admin#mydomain.be
mailer_password: mypassword2
The solution is to set your mailer_transport parameter to 'mail' so SwiftMailer will use the default PHP mail() function.
Otherwise, you could specify the transport directly from your controller:
// Mail() transport
$transport = \Swift_MailTransport::newInstance();
// Message
$message = \Swift_Message::newInstance()
->setFrom("me#domain.org", "My Name")
->setTo(array(
"user#domain.org" => "User Name"
))
->setSubject("Solution for sending e-mail from OVH")
->setBody("...", 'text/plain')
;
// My instance of mailer
$mailer = \Swift_Mailer::newInstance($transport)
->send($message);
Worked for me on an OVH plan with shared e-mail.

Symfony Send email in production environment

I am trying to send email in prod environment but it doesn't work... I am getting this log:
[2014-06-30 09:37:54] request.CRITICAL: Uncaught PHP Exception
Swift_TransportException: "Expected response code 250 but got code
"530", with message "530 5.7.0 Must issue a STARTTLS command first.
o2sm28357522wia.16 - gsmtp "" at
C:\xampp\htdocs\UniDocs\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php
line 386 {"exception":"[object] (Swift_TransportException: Expected
response code 250 but got code \"530\", with message \"530 5.7.0 Must
issue a STARTTLS command first. o2sm28357522wia.16 - gsmtp\r\n\" at
C:\xampp\htdocs\UniDocs\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php:386)"}
[]
However, in dev it is working...
The config I have is the following:
config_dev.yml:
swiftmailer:
transport: smtp
encryption: ssl
auth_mode: login
host: smtp.gmail.com
username: myemail#gmail.com
password: mypass
config.yml:
swiftmailer:
transport: %mailer_transport%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
parameters.yml:
mailer_transport: smtp
mailer_host: smtp.gmail.com
mailer_user: myemail#gmail.com
mailer_password: mypass
I also have another question..., in web/app.php do I have to write $kernel = new AppKernel('prod', false); or $kernel = new AppKernel('prod', true);??
I've used my Gmail account to send emails in Symfony2, and I specify some parameters which you have not specified. Below is my configuration:
config.yml:
swiftmailer:
transport: %mailer_transport%
encryption: %mailer_encryption%
auth_mode: %mailer_auth_mode%
host: %mailer_host%
username: %mailer_username%
password: %mailer_password%
spool: { type: memory }
parameters.yml:
mailer_transport: smtp
mailer_encryption: ssl
mailer_auth_mode: login
mailer_host: smtp.gmail.com
mailer_username: myusername#gmail.com
mailer_password: mypassword
Related with your second question, the original line is
$kernel = new AppKernel('prod', false);
If you change this to true, error messages can be showed in production mode, because the second parameter of the AppKernel construct indicates the debug mode.

Resources