Wysyłanie maili z formularza kontaktowego przez obcy serwer z wykorzystaniem funkcji mail() w PHP może być wykonane za pomocą protokołu SMTP. Aby to zrobić, musisz zdefiniować kilka zmiennych i funkcji, a następnie użyć ich do wysłania wiadomości e-mail przez serwer SMTP.
Zdefiniuj zmienne dla Twojego konta e-mail, w tym adres e-mail, hasło, nazwę nadawcy i odbiorcę
$email_to = 'adres-odbiorcy@example.com';
$email_subject = 'Temat wiadomości';
$email_from = 'nazwa-nadawcy@example.com';
$email_from_name = 'Nazwa Nadawcy';
$email_body = 'Treść wiadomości';
$smtp_host = 'smtp.example.com';
$smtp_username = 'adres-email@example.com';
$smtp_password = 'hasło-do-email';
$smtp_port = 587;
Zdefiniuj funkcję send_email() do wysyłania wiadomości e-mail.
function send_email($to, $subject, $body, $from, $from_name, $smtp_host, $smtp_username, $smtp_password, $smtp_port) {
require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 0;
$mail->Debugoutput = 'html';
$mail->Host = $smtp_host;
$mail->Port = $smtp_port;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = $smtp_username;
$mail->Password = $smtp_password;
$mail->setFrom($from, $from_name);
$mail->addAddress($to);
$mail->Subject = $subject;
$mail->msgHTML($body);
if (!$mail->send()) {
return false;
} else {
return true;
}
}
Wywołaj funkcję send_email() i przekaż zdefiniowane zmienne jako parametry.
if (isset($_POST['submit'])) { $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$body = "Od: $name<br>Email: $email<br>Treść: $message";
if (send_email($email_to, $email_subject, $body, $email_from, $email_from_name, $smtp_host, $smtp_username, $smtp_password, $smtp_port)) {
echo 'Wiadomość została wysłana.'; } else {
echo 'Wysyłanie wiadomości nie powiodło się.'; }
}
Upewnij się, że w folderze z Twoim skryptem znajduje się folder phpmailer z biblioteką PHPMailer, którą można pobrać ze strony
https://github.com/PHPMailer/PHPMailer.