Posílání emailů s přílohou v Symfony2

Posílání emailů s přílohou v Symfony2
« kdy: 29. 05. 2014, 02:01:58 »
Dobrý den,
nevíte někdo jak se dají posílat emaily s přílohou v Symfony2 přes jednoduchý formulář? viz. http://verejneudalosti.cz/web/fotopriznani
Na localhostu mi to funguje vše bez problému, i posílání mailů na gmail i seznam. Jakmile to ale rozeběhnu na hostingu, napíše mi to sice, že zpráva byla odeslána, ale nic nedorazí.
Domnívám se, že může bých chyba v mém nešikovném řešení přílohy. Mohu se tedy zeptat na tipy, či návod, jak by se to správně mělo dělat, aby to i na hostingu šlapalo bez problému? Děkuji


eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Posílání emailů s přílohou v Symfony2
« Odpověď #1 kdy: 29. 05. 2014, 06:06:22 »
A mail bez přílohy to odešle? Na některých hostinzích nemají odesílání e-mailů rádi, tak to všemožně blokují.

Re:Posílání emailů s přílohou v Symfony2
« Odpověď #2 kdy: 29. 05. 2014, 11:50:20 »
Ano... mail bez přílohy chodí normálně.

Re:Posílání emailů s přílohou v Symfony2
« Odpověď #3 kdy: 29. 05. 2014, 12:47:03 »
Pro lepší orientaci. Můj kód vypadá Asi takto (http://tutorial.symblog.co.uk/docs/validators-and-forms.html), s tím, že jsem tam potřeboval vměstnat přílohy. To se mi povedlo, ale na hostingu to nejde.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Posílání emailů s přílohou v Symfony2
« Odpověď #4 kdy: 29. 05. 2014, 12:58:14 »
Dal by se sem dát i odkaz na kód, který ty e-maily skutečně odesílá? Třeba by to pomohlo.


Re:Posílání emailů s přílohou v Symfony2
« Odpověď #5 kdy: 29. 05. 2014, 13:16:59 »
Tady zasílám zdrojáky kódů, s posíláním mailů.

PageController:
Kód: [Vybrat]
public function contactAction() {
        $enquiry = new Enquiry();
        $form = $this->createForm(new EnquiryType(), $enquiry);

        $request = $this->getRequest();
        if ($request->getMethod() == 'POST') {
            $form->bind($request);

            if ($form->isValid()) {
                $attachment = Swift_Attachment::fromPath($enquiry->getFile(), 'image/jpeg')
                        ->setFilename('vylanyfoto.jpg');
               

                $message = \Swift_Message::newInstance()
                        ->setSubject('Další nakalený foto z webu')
                        ->setFrom('partymanx@seznam.cz')
                        ->setTo($this->container->getParameter('fotopriznani.emails.contact_email'))
                        ->setBody($this->renderView('FotoPriznaniBundle:Page:contactEmail.txt.twig', array('enquiry' => $enquiry)))
                        ->attach($attachment);

                $this->get('mailer')->send($message);

                $this->get('session')->getFlashBag()->add('blogger-notice', 'Tvoje párty šlupková fotka byla úspěšně odeslána a zařadila se do fronty na publikování. Sleduj FB');

                // Redirect - This is important to prevent users re-posting
                // the form if they refresh the page
                return $this->redirect($this->generateUrl('FotoPriznaniBundle_contact'));
            }
        }

        return $this->render('FotoPriznaniBundle:Page:contact.html.twig', array(
                    'form' => $form->createView()
        ));
    }

Contacttwig formulář:
Kód: [Vybrat]
<p>Zaslat jakoukoliv fotografii z pařby můžete zcela anonymně. Jediný povolený formát je .jpg/.jpeg</p>


<form action="{{ path('FotoPriznaniBundle_contact') }}" method="post" {{ form_enctype(form) }} class="blogger">
        {{form_errors (form)}}

        {{form_row (form.body)}}
        {{form_row (form.file)}}

        {{form_rest (form)}}

    <input type = "submit" value="Odeslat"/>
</form>
contactEmail.txt.twix
Kód: [Vybrat]
A contact enquiry was made at {{ "now" | date("Y-m-d H:i") }}.

Subject: Vykalený fotopřiznání z akcí
Body:
{{ enquiry.body }}
Enquiry file:
Kód: [Vybrat]
      public function getFile()
    {
        return $this->file;
    }

    public function setFile($file)
    {
        $dir = dirname($file);
        $fulln = basename($file);
        $this->file = $dir.'/'.$fulln;
//        echo $this->file;
    }
EnquiryType:
Kód: [Vybrat]
public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('body', 'textarea', array(
            'label' => 'Popis',
            'required' => true
        ));
        $builder->add('file', 'file', array(
            'label' => 'Ožralá fotka',
            'required' => true
        ));
    }