PHPMailerを使う必要が出てきたのですがネット上にはComposerを使ったパターンが主だったので、フレームワークを使わないパターンを解説していこうと思います。
またレンタルサーバはConohaWing使ってますが、他のサービスでも認証情報以外はほぼ同じでいけると思います。
PHPMailerは過去バージョンだとセキュリティ的に問題があるので、最新版を使いましょう。
【セキュリティ ニュース】「PHPMailer」に深刻な脆弱性 - 過去修正済みの脆弱性が再発(1ページ目 / 全1ページ):Security NEXT
コンテンツマネジメントシステム(CMS)などにも採用されているPHP環境向けのメール送信ライブラリ「PHPMailer」に深刻な脆弱性が含まれていることがわかった。:Security NEXT
ダウンロードと配置
こちらにアクセス。
https://github.com/PHPMailer/PHPMailer#installation–loading
not using Composer ~ のところにダウンロードリンクがあるので、ダウンロードおよび展開を完了してください。そしてPHPのプロジェクト内に移動。
読み込み&利用
PHPMailerはクラスパターンなので、以下のような書き方で読み込むことができます。
use PHPMailer\PHPMailer\PHPMailer;
require(__DIR__ . '/PHPMailer/PHPMailer.php');
require(__DIR__ . '/PHPMailer/Exception.php');
require(__DIR__ . '/PHPMailer/SMTP.php');
ディレクトリ部分は各自の環境に合わせて変えてください。
そして実際に送信するところはこんな感じ。
$mailer = new PHPMailer(true);
$mailer->CharSet = 'UTF-8';
$mailer->isSMTP();
$mailer->Host = 'mailxx.conoha.ne.jp';
$mailer->SMTPAuth = true;
$mailer->Username = 送信メールアドレス;
$mailer->Password = 送信メールアドレスのパスワード;
$mailer->SMTPSecure = 'tls';
$mailer->Port = 587;
$mailer->Encoding = 'base64';
$mailer->setFrom($送信メールアドレス, mb_encode_mimeheader('送信者表示名'));
$mailer->addAddress($送信先メールアドレス);
$mailer->isHTML(false);
$mailer->Subject = 'メールタイトル';
$mailer->Body = 'メール本文';
$mailer->send();
注意点はポート番号ですかね。ConohaWing公式だと465を使えと書いてありましたが587でないと認証できません。これで特に迷惑フォルダ等にも送られることなくメールを送信することができました。
まとめ
composerを使わない方法はあまりありませんでしたが、これでとりあえずパッケージ依存を最小限にすることができます。シンプルな構成での実装は勉強にもなります。ぜひ試してみてください。