こんにちは、Ryohei(@ityryohei)です!

本記事では、PHPMailerというライブラリを使って、さくらインターネットで作成したメールアドレスでメールを送信する方法をご紹介しています。

PHPMailerでさくらのレンタルサーバで作成したメールアドレスを使いたいけど、どうすればいいのかな?

上記の疑問にお答えできればと思います。

では、解説していきます。

何はともあれPHPMailer

まずはPHPMailerを使用できる状態にしていきます。下記のいずれかの方法で本体を取得しましょう。

Composerで取得する

Composerでさくっとインストールする、という方は下記のコマンドをどうぞ!

composer require phpmailer/phpmailer

composer.jsonがない場合は下記で初期化してくださいね。

composer init

インストールが終わりましたら、PHPMailerを使用するファイルの先頭に下記を追記すれば準備完了です。

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

Composerは偉大ですね!

ダウンロードで取得する

とりあえずダウンロードで使ってみようかな、という方は下記のURLからどうぞ!

ダウンロードしたファイル一式をプロジェクトの配下に設置し、マニュアルでPHPMailerを呼び出せば準備完了です。

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

これでPHPMailerが使えるようになりました。続いてさくらのレンタルサーバで作成したメールアドレスでメールを送信してみましょう。

SMTP認証後にメールを送信する

こちらはSMTP認証を通してメールを送信する方法です。前項でPHPMailerを使用できるようにした後、下記を追記します。各値は環境に合わせて変更してくださいね!

$mail = new PHPMailer(true);

try {
//ホスト(さくらのレンタルサーバの初期ドメイン)
$host = 'xxx.sakura.ne.jp';
//メールアカウントの情報(さくらのレンタルサーバで作成したメールアカウント)
$user = 'info@xxx.co.jp';
$password = 'password';
//差出人
$from = 'info@xxx.co.jp';
$from_name = 'Info';
//宛先
$to = 'yamada_taro@xxx.co.jp';
$to_name = 'Taro Yamada';
//件名
$subject = 'メールの件名';
//本文
$body = 'メールの本文';

//諸々設定
//$mail->SMTPDebug = 2; //デバッグ用
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = $host;
$mail->Username = $user;
$mail->Password = $password;
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
$mail->setFrom($from, $from_name);
$mail->addAddress($to, $to_name);
$mail->Subject = $subject;
$mail->Body = $body;

//メール送信
$mail->send();

} catch (Exception $e) {
echo '失敗: ', $mail->ErrorInfo;
}

これでさくらインターネットで作成したメールアドレスで、SMTP認証を通してメールを送信することができるようになりました。PHPMailerは本当に使いやすいライブラリですね!

SMTP認証せずにメールを送信する

こちらは番外編です。

メールフォームなどでメールアカウントを使用する場合、セキュリティの観点からSMTP認証を通してメールを送信する方法が推奨されています。ただ実際にWeb制作をしていると、わざわざ認証を通す必要はない、というクライアントもいますよね…。

そういった場合は下記のような最低限の記述で一応メールを送信することができます。

$mail = new PHPMailer(true);

try {
//ホスト(さくらのレンタルサーバの初期ドメインを指定)
$host = 'xxx.sakura.ne.jp';
//差出人(作成したメールアドレスを指定)
$from = 'info@xxx.co.jp';
$from_name = 'Info';
//宛先
$to = 'yamada_taro@xxx.co.jp';
$to_name = 'Taro Yamada';
//件名
$subject = 'メールの件名';
//本文
$body = 'メールの本文';

//諸々設定
$mail->Host = $host;
$mail->Port = 587;
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
$mail->setFrom($from, $from_name);
$mail->addAddress($to, $to_name);
$mail->Subject = $subject;
$mail->Body = $body;

//メール送信
$mail->send();

} catch (Exception $e) {
echo '失敗: ', $mail->ErrorInfo;
}

ただ、この方法だとSMTP認証が必須になった瞬間にメールが送信できなくなるので注意が必要です。メールフォームなどでメールアドレスを使用する場合、基本的にSMTP認証を通してメールを送信するようにしましょう!

最後に

PHPMailerは長いことお世話になっているライブラリで、今後もお世話になっていくだろうと思います。メールを送信するという利用なので一度設定してしまえば他の案件にも使うことができるという点も魅力ですよね。

PHPMailerでさくらインターネットで作成したメールアドレスの使用を検討されている方、ぜひ本記事を参考に構築していただければ幸いです。

以上、PHPMailerを使ってさくらインターネットで作成したメールアドレスでメールを送信する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。