Page 1 of 1

Order email - Cc δε γίνεται η αποστολή

Posted: Thu Jul 24, 2014 6:31 pm
by OpDev
Όταν γίνεται μία παραγγελία το email που πάει στον πελάτη θέλω να έχει Cc και ένα ακόμα email.

Ακολούθησα τις οδηγίες από αυτό το http://sankartypo3.wordpress.com/2013/0 ... -in-mails/ κάνοντας όπου χρειάζεται αλλαγές.

Για την αποστολή χρησιμοποιώ smtp.
Το email φεύγει κανονικά και μάλιστα εμφανίζει και ως cc το email που έχω βάλει, όμως ποτέ δε φτάνει το email στην cc διεύθυνση.

Αν αντί για smtp βάλω mail το email φεύγει κανονικά(και cc) αλλα το πρόβλημα είναι οτι αν το email είναι εκτός απο της διεύθυνσης του server τότε κόβεται ως spam απο τον ίδιο τον server.

πχ "mail"
Send mail to mycustomer@gmail.com with cc info@myshop.gr
Το email έρχεται στο info αλλα κόβεται σαν spam απο το server και δε πάει στο @gmail( Αυτός είναι και ο λόγος που χρησιμοποιώ smtp)

πχ "smtp"
Send mail to mycustomer@gmail.com with cc info@myshop.gr
Το email πηγαίνει στο πελάτη και εμφανίζεται και κάτω το Cc info@myshop.gr . Όμως ποτέ δε λαμβάνω αυτό το email στο info.

Καμιά ιδέα;

Re: Order email - Cc δε γίνεται η αποστολή

Posted: Fri Jul 25, 2014 2:17 pm
by People's Code
Καλημέρα

Έμπειρος χρήστης είσαι, να υποθέσω ότι έχεις τους λόγους σου και δεν θέλεις να χρησιμοποιήσεις το πεδίο "Additional Alert E-Mails:" που κάνει ακριβώς το ίδιο με το CC...

Σχετικά με τον κώδικα που πόσταρες με μία πρώτη ματιά δεν βλέπω κάτι λάθος - εκτός βέβαια από το ότι δεν χρησιμοποιεί $this->newline; για να είναι συμβατό με όλα τα λειτουργικά, επίσης εννοείται ότι δεν χρειαζόσουν όλον αυτόν τον κώδικα για να προσθέσεις ένα απλό CC στο header.

Σου προτείνω μία πιο απλή λύση που 99% θα δουλέψει όπως το θες με πρωτόκολλο mail :
Στο system/library/mail.php μετά την γραμμή 79
το:

Code: Select all

		if (is_array($this->to)) {
			$to = implode(',', $this->to);
		} else {
			$to = $this->to;
		}
το κάνεις:

Code: Select all

		if (is_array($this->to)) {
			$to = implode(',', $this->to);
		} else {
			$to = $this->to;
		}
      $to .= ',info@myshop.gr';

Re: Order email - Cc δε γίνεται η αποστολή

Posted: Fri Jul 25, 2014 4:28 pm
by OpDev
Λόγο απαίτησης μόνο σε συγκεκριμένες παραγγελίες πρέπει να υπάρχει το Cc και όχι γενικά και επίσης το "Additional Alert E-Mails:" αποστέλλει την ειδοποίηση που πηγαίνει στον admin(εκείνο το plan text ) και όχι αυτό που πηγαίνει στον πελάτη >:D

Τώρα το θέμα αν χρησιμοποιήσω την "mail" μου κόβει την αποστολή σε εξωτερικά domain(εκτός server like @gmail,@yahoo)
γιαυτό και χρησιμοποιώ την επιλογή για smtp.

Δε μπόρεσα να προσθέσω το cc πεδίο και να το κάνω να δουλέψει.

Προσωρινά τροποποίησα το http://www.opencart.com/index.php?route ... on_id=6371

Re: Order email - Cc δε γίνεται η αποστολή

Posted: Mon Jul 28, 2014 4:04 pm
by botonakis
Εγώ πάντως μέσω του extension που αναφέρει ο OpDev θα το έκανα.
Γενικά όμως, εάν έκανες ένα vqmod στο: catalog/model/checkout/order.php

και στη γραμμή:

Code: Select all

$template->data['email'] = $order_info['email'];
πρόσθετες με κόμμα (,) το email που θέλεις, δε θα έκανε cc αλλά θα έστελνε το ίδιο email και στον πελάτη και στο email που θέλεις. Αφού δεν είναι bcc, έτσι και αλλιώς θα το βλέπει ο πελάτης.

Re: Order email - Cc δε γίνεται η αποστολή

Posted: Tue Jul 29, 2014 5:49 pm
by People's Code
Καλημέρα

@OpDev
Αυτό που σου πρότεινα προηγουμένως βασίζεται στην ίδια λογική με το vQmod που χρησιμοποιείς. Δηλαδή αντί για CC χρησιμοποιείς το $to και του ορίζεις ότι email θες ή του προσθέτεις επιπλέον emails. Επειδή αρχικά δεν είχες αναφέρει τις προϋποθέσεις που ανέφερες στο δεύτερο post, για αποστολή html emails με SMTP και αποστολή επιπλέον html email υπό προϋποθέσεις, εγώ θα το έκανα ως εξής:

Στο catalog/model/checkout/order.php γραμμή 567
το

Code: Select all

$mail->setText(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
το κάνεις

Code: Select all

$mail->setHtml($html);
//$mail->setText(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
Έτσι θα στέλνει στον admin html email

Παρακάτω στη γραμμή 570 το

Code: Select all

// Send to additional alert emails
$emails = explode(',', $this->config->get('config_alert_emails'));
το κάνεις:

Code: Select all

       
// Send to additional alert emails
if ($order_info && $order_info['shipping_country_id'] == 84) { // κάποιο τυχαίο condition
    $emails = explode(',', $this->config->get('config_alert_emails'));
} else {
    $emails = '';
}
- Στις ρυθμίσεις του Opencart στο "Additional Alert E-Mails:", ορίζεις όσα επιπλέον emails θέλεις και θα αποστέλλεται σε αυτά html email.
- Στο condition "if ($order_info && $order_info['shipping_country_id'] == 84) {" θα ορίσεις το condition που θες εσύ να εξετάζεται για το αν θα αποστέλλονται σε επιπλέον emails για τη συγκεκριμένη παραγγελία. Στη συγκεκριμένη περίπτωση φεύγει επιπλέον email αν ο πελάτης διαλέξει χώρα αποστολής Ελλάδα.

Re: Order email - Cc δε γίνεται η αποστολή

Posted: Tue Jul 29, 2014 5:54 pm
by botonakis
OpenCart-Hellas,
σε ευχαριστώ και εγώ για την απάντηση αυτή, γιατί μου έλυσες μια άλλη απορία που είχα πρόσφατα με κάποιον πελάτη.

Re: Order email - Cc δε γίνεται η αποστολή

Posted: Tue Aug 05, 2014 7:14 am
by gkasios
Καλημέρα

πριν μερικές μέρες ανεβάσαμε ένα νέο δωρεάν Extension που κάνει περίπου αυτό που θέλεις.

http://www.opencart.com/index.php?route ... n_id=18114