[Composer不使用]シンプルにPHPMailerでConoha Wingからメール送信

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を使わない方法はあまりありませんでしたが、これでとりあえずパッケージ依存を最小限にすることができます。シンプルな構成での実装は勉強にもなります。ぜひ試してみてください。

タイトルとURLをコピーしました