Fórum Root.cz

Hlavní témata => Server => Téma založeno: voldaja1 29. 05. 2014, 02:01:58

Název: Posílání emailů s přílohou v Symfony2
Přispěvatel: voldaja1 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
Název: Re:Posílání emailů s přílohou v Symfony2
Přispěvatel: eMko 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í.
Název: Re:Posílání emailů s přílohou v Symfony2
Přispěvatel: voldaja1 29. 05. 2014, 11:50:20
Ano... mail bez přílohy chodí normálně.
Název: Re:Posílání emailů s přílohou v Symfony2
Přispěvatel: voldaja1 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.
Název: Re:Posílání emailů s přílohou v Symfony2
Přispěvatel: eMko 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.
Název: Re:Posílání emailů s přílohou v Symfony2
Přispěvatel: voldaja1 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
        ));
    }