Zend Mail και ExtJS

Σχεδόν όλες οι ιστοσελίδες διαθέτουν κάποια φόρμα επικοινωνίας, ώστε να μπορούν οι χρήστες να επικοινωνούν με τους διαχειριστές της. Μια φόρμα επικοινωνίας αποτελείται από δύο κομμάτια: το πρώτο είναι αυτό που φαίνεται και συμπληρώνει ο χρήστης. Το δεύτερο και σημαντικότερο είναι η αποστολή των στοιχείων στο email του διαχειριστή. Αυτό δεν μπορεί να γίνει με HTML, αλλά χρειάζεται μια δυναμική γλώσσα προγραμματισμού όπως php, asp, jsp κλπ. Εμείς θα δούμε πώς μπορούμε να στείλουμε ένα email χρησιμοποιώντας το Zend_Mail.

Τον κώδικα της εφαρμογής μπορείτε να τον βρείτε εδώ. ενώ demo της εφαμοργής εδώ.

Απαραίτητη προϋπόθεση για να παρακολουθήσετε τον οδηγό είναι, να έχετε εγκατεστημένο το Zend Framework (εμείς θα χρησιμοποιήσουμε την έκδοση 1.5.2, ένω πρόσφατα έχει βγει ως RC, η 1.6). Αναλυτικές οδηγίες για να εγκαταστήσετε το Zend Framework θα βρείτε εδώ.

Το πρώτο πράγμα που θα αναρωτηθεί κανείς είναι: "Γιατί να χρησιμοποιήσω το Zend_Mail, και όχι την απλή function της php: την mail;". Η απάντηση είναι, ότι η mail είναι για απλά πράγματα και χρήσιμη εάν θέλουμε να στείλουμε email με βασικά στοιχεία. Τα πράγματα περιπλέκονται πάρα πολύ, εάν θέλουμε να στείλουμε emal με HTML στοιχεία. Εκεί η πολυπλοκότητα έχει αυξηθεί σημαντικά και με την mail, τα πράγματα θα είναι αρκετά δύσκολα. Ο σημαντικότερος όμως λόγος, είναι ότι αποφεύγουμε το mail injection, άρα αυξάνουμε την ασφάλεια της ιστοσελίδα μας. Θα έχουμε δηλαδή, έλεγχο στο client side μέρος του χρήστη μέσω του ExtJS, στο php κομμάτι της εφαρμογής μας χρησιμοποιώντας τεχνικές που θα αποτρέψουν οποιεσδήποτε ανεπιθύμητες ενέργειες και τέλος τον έλεγχο που δίνει η ίδια η Zend Mail τάξη.

Επειδή θέλουμε να ανεβάσουμε την σελίδα μας, ένα επίπεδο παραπάνω από τις απλές HTML φόρμες, θα συνδυάσουμε την ασφάλεια της Ζend_Mail με τα καλούδια του ExtJS. Οπότε θα χρησιμοποιήσουμε την φόρμα που φτιάξαμε σε προηγούμενο άρθρο μας (εννοείται πώς θα την προσαρμόσουμε στις ανάγκες μας) και θα στέλνουμε τα δεδομένα στην Zend Mail.

Δημιουργία φόρμας

Η φόρμα μας δεν θα έχει κάτι το εξαιρετικό, μερικά textfield και ένα textarea για τα comments των χρηστών. Συγκεκριμένα έχουμε:

Δημιουργούμε κάτι σαν το παρακάτω, που το συναντάμε σε αρκετές σελίδες:

MailForm

Δημιουργία κώδικα

Πάμε τώρα στο κυρίως κομμάτι του οδηγού μας, που είναι η δημιουργία του κώδικα για την αποστολή των δεδομένων, στο email του χρήστη.

Το πρώτο και σημαντικότερο είναι να προσθέσουμε τις απαιτούμενες βιβλιοθήκες στο αρχείο μας. Εδώ θα χρειαστούμε να φορτώσουμε την Zend_Mail, χρησιμοποιώντας την include_once μέθοδο της php. Έχουμε:

<?php
  include_once('Zend/Mail.php');
?>
<php>

Αφού φορτώσαμε την βιβλιοθήκη μας, έπειτα θα πρέπει να δημιουργήσουμε ένα νέο αντικείμενο της τάξης Mail, ώστε να έχουμε πρόσβαση στις μεθόδους της. Οπότε:

<php>
<?php
  $mail = new Zend_Mail();
?>

Για να στείλουμε ένα email, θα πρέπει να έχουμε ορίσει τουλάχιστον έναν παραλήπτη, έναν αποστολέα και κάποιο μήνυμα. Επιπλέον στοιχεία όπως τίτλος, κάποιο attachment θα δώσουν μια πιο ολοκληρωμένη εικόνα στον παραλήπτη του μηνυματός. Οπότε πάμε να ορίσουμε τις παραμέτρους θα έχει το mail μας, που ουσιαστικά είναι αυτές που ζητάμε από την φόρμα μας. Άρα αρχικά διαβάζουμε και αποθηκεύουμε τα δεδομένα του χρήστη, έπειτα περνάμε τα δεδομένα αυτά στις μεθόδους και τέλος στέλνουμε το email. Στο σημείο αυτό, μπορούμε να προσθέσουμε οποιοσδήποτε ελέγχους θεωρούμε σημαντικούς για την ασφάλειά μας. Επειδή ξεφεύγουν από τα πλαίσια αυτού του οδηγού, δεν θα υλοποιήσουμε κάποιον ιδιαίτερο έλεγχο. Συνεχίζουμε με:

<?php

$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$body = $_POST['comment'];

//now we passing those variables
//to $mail methods

//the email, and the name of the sender
$mail->setFrom($email, $name .' '. $surname);

//the recipient of the mail
$mail->addTo($email, $name .' '. $surname);

//the subject of the mail
$mail->setSubject($subject);

//the body of the mail in HTML format
//if we want simple plain text, we should use
//$mail->setBodyText($body);
$mail->setBodyHtml($body);

//finally we send our mail
$mail->send();

?>

Οπότε χρησιμοποιώντας την φόρμα, θα φθάσει στο inbox μας ένα email με τα στοιχεία που εισάγαμε, παρόμοιο με της παρακάτω εικόνας:

MailForm

Τώρα εάν, θέλουμε να προσθέσουμε επιπλέον στοιχεία στην επικεφαλίδα, καλούμε τις αντίστοιχες μεθόδους. Ας δούμε μερικές:

<?php
  //sent the mail to an another recipient
  $mail->addCc($email, $name .' '. $surname);

  //we sent the email to a recipient without,
  //but this email is not visible in the header
  $mail->addBcc($email, $name .' '. $surname);

?>

Comments

answer this post

It can require a long time to improve essay writing skills. But under some circumstances, some people are lack of time. If you want to save time and get the premium quality essay buying paper, you should search for the great admission essay writing service and purchase term paper right there. After that, your academic success is guaranteed.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.