Skip to content

Sending e-mail messages using PHP

PHP provides several methods for sending e‑mail messages from scripts. On ruachost.com, you can use the built‑in mail() function, the PEAR Mail class, or PHPMailer depending on your hosting package and requirements.

  • If you are on Shared Hosting, Reseller Hosting, or Managed WordPress Hosting, you cannot use external SMTP servers.
  • You must send e‑mail through ruachost.com servers.
  • Other hosting packages (Managed VPS, Dedicated) allow more flexibility with external SMTP servers.

The simplest way to send e‑mail:

<?php
mail(
"recipient@example.com",
"This is the message subject",
"This is the message body",
"From: sender@example.com\r\nContent-Type: text/plain; charset=utf-8",
"-fsender@example.com"
);
?>

Always set the From address correctly.

  • If not set, messages may appear as nobody@example.com.
  • Limitations: no SMTP authentication, limited header control.

More powerful and supports SMTP authentication.

<?php
require 'Mail.php';
$recipient = 'recipient@example.com';
$headers['From'] = 'sender@example.com';
$headers['To'] = $recipient;
$headers['Subject'] = 'This is the message subject';
$headers['Content-Type'] = 'text/plain; charset=utf-8';
$body = 'This is the message body';
$smtp_params['host'] = 'ssl://server_name';
$smtp_params['port'] = '465';
$smtp_params['auth'] = true;
$smtp_params['username'] = 'username';
$smtp_params['password'] = 'password';
$mail_object = Mail::factory('smtp', $smtp_params);
$mail_object->send($recipient, $headers, $body);
?>
  • Requires installing the PEAR Mail package.
  • Supports authentication and advanced headers.

PHPMailer is a popular library with robust features.

<?php
use PHPMailer\PHPMailer\PHPMailer;
require 'vendor/autoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.server.com';
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'password';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('sender@example.com', 'Sender Name');
$mail->addAddress('recipient@example.com');
$mail->Subject = 'This is the message subject';
$mail->Body = 'This is the message body';
if(!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
  • Easier formatting of HTML e‑mails.
  • Better error handling.
  • Widely used in CMS platforms like WordPress.