Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UPN in QR koda se ne pojavita v poslanem emailu #6

Open
SloZiga opened this issue Jul 12, 2022 · 12 comments
Open

UPN in QR koda se ne pojavita v poslanem emailu #6

SloZiga opened this issue Jul 12, 2022 · 12 comments

Comments

@SloZiga
Copy link

SloZiga commented Jul 12, 2022

Kot omenjeno v naslovu UPN in QR koda se ne prikažeta v poslani e-pošti ko je zaključeno naročilo (se pa pojavi na spletnem mestu, ko se zaključi nakup) samo ker veliko ljudi to spregleda je dobro imeti ta UPN in QR kodo tudi na emailu (stranki).

Vem da je malo možnosti, da se to kaj popravi/nastavi, samo za vsak slučaj vam pa tukaj pišem.

Lep pozdrav

@dz0ny
Copy link
Contributor

dz0ny commented Jul 12, 2022

Če se uporablja kak drugi "framework" za urejanje zaključnega emaila, potem je potrebno ročno dodati hook ali pa pa klicati do_action v predlogi. Hook je tale https://github.com/woocart/woocommerce-upn/blob/main/index.php#L35

@SloZiga
Copy link
Author

SloZiga commented Jul 12, 2022

Torej moram v functions.php dodati "add_action('woocommerce_email_before_order_table', array($this, 'upn_instructions'), 10, 3);" da se prikaže tudi v emailu. (Da za kreacijo zaključenega emaila se uporablja dodatni vtiček "WooCommerce PDF Invoices & Packing Slips" in "WooCommerce Pretty Emails".

@SloZiga
Copy link
Author

SloZiga commented Jul 12, 2022

Se opravičujem mi je malo tuje dodajanja Hookov in function.php,..... ali bi vas lahko prosil za malo več informacij kje je potrebno vstaviti kodo in točno kakšno kodo, se probal "add_action('woocommerce_email_before_order_table', array($this, 'upn_instructions'), 10, 3);" dodati v function.php samo sem dobil error na strani ( predvievam da mi še nekaj manka poleg te kode) Se ponovno opravičujem sem zelo zelen pri teh zadevah. In vsaka pomoč bo dobrodošla in cenjena!

LP

@SloZiga
Copy link
Author

SloZiga commented Jul 12, 2022

Aha torej moram dodati to kodo za neprijavljene, bom jo sedaj dodal, a moram pri tej kodi zamenjati "add_action( 'woocommerce_thankyou', 'adding_customers_details_to_thankyou', 10, 1 );"
v:
" add_action('woocommerce_email_before_order_table', array($this, 'upn_instructions'), 10, 3);"

@dz0ny
Copy link
Contributor

dz0ny commented Jul 12, 2022

Ne, najti je treba hook ki ga ima "WooCommerce Pretty Emails" in potem spremenit.

-add_action( 'woocommerce_thankyou', 'adding_customers_details_to_thankyou', 10, 1 );
+add_action( 'WooCommerce Pretty Emails hook', 'adding_customers_details_to_thankyou', 10, 1 );
function adding_customers_details_to_thankyou( $order_id ) {
    // Only for non logged in users
    if ( ! $order_id || is_user_logged_in() ) return;

    $order = wc_get_order($order_id); // Get an instance of the WC_Order object

    wc_get_template( 'order/order-details-customer.php', array('order' => $order ));
}

@SloZiga
Copy link
Author

SloZiga commented Jul 12, 2022

Hmmm po pregledu functions.php od child teme ne najdem nobenega zapisa za "WooCommerce Pretty Emails" katerega bi lahko spremenil, sem začasno onemogočil vtiček "WooCommerce Pretty Emails" ker ne najdem hooka od plugina (samo tudi po tem ko sem vtiček onemogočil se QR koda ne prikaže v e-pošti). Sem pa opazil da se na UPN obrazcu (temu ki ga dobim na spletni strani preko e-pošte ga še vedno ne prejmem) sem opazi, da se priimek 2x izpiše (https://ibb.co/0qQkdtv)

@priklop
Copy link

priklop commented Dec 17, 2022

Pozdravljeni.

Jaz imam enake težave, da mi v prejetem mailu novega naročila ne prikaže slike. Poskusil sem pri default nastavitvah woocommerca, torej brez kakšnega dodatnega vtičnika za "framework" urejanja zaključnega maila/sporočila.
V izvorni kodi maila je videti, da kliče image, le prikaže ga ne. Sem poskusil prejem maila v Gmailu in v Outlooku, pri obeh enako.
Je mogoče kdo kaj ugotovil v čem bi bil problem?
Hvala za pomoč in odgovor.

@dz0ny
Copy link
Contributor

dz0ny commented Dec 18, 2022

Pozdravljeni.

Jaz imam enake težave, da mi v prejetem mailu novega naročila ne prikaže slike. Poskusil sem pri default nastavitvah woocommerca, torej brez kakšnega dodatnega vtičnika za "framework" urejanja zaključnega maila/sporočila. V izvorni kodi maila je videti, da kliče image, le prikaže ga ne. Sem poskusil prejem maila v Gmailu in v Outlooku, pri obeh enako. Je mogoče kdo kaj ugotovil v čem bi bil problem? Hvala za pomoč in odgovor.

Mogoče je da karkoli se uporablja stripa sliko iz končenga maila ali pa PHP nima vseh extensionov.

@grega1337
Copy link

grega1337 commented Mar 14, 2023

Mislim da sem odkril vzrok problema.
PNG slika je base64 enkodirana, ampak jo večina emailov (med njimi tudi gmail) spremeni string in je ne dekodira uspešno, torej se ne prikaže.
Če pogledate raw message vidite, da doda: "=\r\n" za vsakih 80 črk in to pokvari encoding.
Ne vem če je to dejanski vzrok ali kaj bi bilo, lahko pa na telefonu vidite, da se pokaže ikona manjkajoče slike ravno zaradi tega, ker ne dekodira uspešno.

Gmail ne podpira več embeded slik. Vrjetno bi morala biti slika kot priloga in v src linku CID do priloge.

Je možno to kako popraviti?
Hvala!

@grega1337
Copy link

grega1337 commented Mar 22, 2023

Zdravo,

Sem našel način kako lahko dodate sliko UPN v prilogo.

/**
         * Add content to the WC emails.
         *
         * @param WC_Order $order Order object.
         * @param bool     $sent_to_admin Sent to admin.
         * @param bool     $plain_text Email format: plain text or HTML.
         */
        public function upn_instructions($order, $sent_to_admin, $plain_text = false)
        {

            if (!$sent_to_admin && 'bacs' === $order->get_payment_method() && $order->has_status('on-hold')) {
                if ($this->instructions) {
                    echo wp_kses_post(wpautop(wptexturize($this->instructions)) . PHP_EOL);
                }
                $this->genUPNDescription($order);
                $png=base64_decode($this->genUPN($order));
                add_filter( 'woocommerce_email_attachments', function ($attachments, $object) use ($png) {if (!empty($png)) {

                    // Create a temporary file name
                    $filename = tempnam(sys_get_temp_dir(), '') . '.png';
                    // Save the image to the temporary file
                    $gdImg=imagecreatefromstring($png);
                    imagepng($gdImg, $filename);
                    // Add the temporary file to the attachments array
                    $attachments[] = $filename;

                    return $attachments;
                }
            }, 10, 2 );
          }
        }

@brezimenko
Copy link

brezimenko commented Jan 6, 2024

Hej,

naj samo dodam, da je potrebno, zato da gregatova koda deluje, dodati še return statement na koncu genUPN funkcije v isti datoteki.

            if (!empty($png)) {
                $data = base64_encode($png);
                // Check for base64 errors
                if ($data !== false) {

                    // Success
                    echo "<br/><img src='data:image/png;base64,$data'><br/>";
                    return ($data); // added this line
                }
            }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

5 participants