Πώς μπορώ να ορίσω τον σωστό αποστολέα με τη mail() της PHP; SMTP
Αν χρησιμοποιείτε τη συνάρτηση mail() της PHP, ως αποστολέας εμφανίζεται το onoma@onomaetairias.gr. Αυτό δεν αλλάζει και θα προκαλέσει σφάλματα ή θα έχει ως αποτέλεσμα το email να θεωρηθεί spam.
Το καλύτερο είναι να χρησιμοποιήσετε SMTP. Στο internet θα βρείτε πολλές δωρεάν κλάσεις PHP για αυτό. Τότε το email στέλνεται μέσω SMTP και ο αποστολέας μπορεί να οριστεί εύκολα.
Μια δημοφιλής επιλογή είναι το PHPMailer
Επιπλέον μπορείτε να στέλνετε email απευθείας μέσω SMTP με το PEAR Mail. Αυτό είναι ιδιαίτερα χρήσιμο για φόρμες ή εξειδικευμένα scripts.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Παράδειγμα: αποστολή email μέσω SMTP με PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Φόρτωση του PEAR Mail
require_once 'Mail.php';
// Ρυθμίσεις SMTP
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@onomaetairias.gr';
$smtp_pass = 'κωδικός_πρόσβασης';
// Στοιχεία email
$to = 'paraliptis@onomaetairias.gr';
$from = 'user@onomaetairias.gr';
$subject = 'Δοκιμαστικό μήνυμα';
$body = 'Αυτό είναι ένα δοκιμαστικό email που στάλθηκε μέσω SMTP.';
$reply = 'user@onomaetairias.gr';
// Headers
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// Αντικείμενο SMTP
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Αποστολή email
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'Το email στάλθηκε με επιτυχία';
endif;
