swiftmailerでメールを送る (Gmail, Yahoo!メール経由)

  • 5
    Like
  • 0
    Comment

下の画像のように、ローカル環境から自分宛てに手軽にメールを送信できます。
SMTP設定をその都度変えられるので、XAMPPに付属しているsendmailを使うよりも便利だと思います。

001.png

環境

  • Windows 10
  • PHP 7.1.4 (XAMPP 7.1.4)
  • Composer 1.5.2
  • swiftmailer 6.0.1

swiftmailerをインストール

:link: Installation

PowerShell
> composer require "swiftmailer/swiftmailer:^6.0"

Googleアカウントを使う

準備

メール送信に使いたいGoogleアカウントでログインした上で、下記のページを開きます。
:link: https://myaccount.google.com/lesssecureapps

そして、「安全性の低いアプリの許可」を有効にします。

001.png

送信する

:link: Basic Usage
:link: Encrypted SMTP
:link: GmailのSMTP設定

<?php
require_once './vendor/autoload.php';

$from = '<Gmailアドレス>';

// 送信設定
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
    ->setUsername($from)
    ->setPassword('<Googleのパスワード>');

// 送信設定をもとにメール送信のインスタンスを作成
$mailer = new Swift_Mailer($transport);

// メッセージを作成
$message = (new Swift_Message('件名'))
    ->setFrom([$from => '送信者名 (省略可)'])
    ->setTo(['<送信先アドレス>' => '受信者名 (省略可)'])
    ->setBody("こんにちは!\nこれはテスト送信です。\nTLSで暗号化しています。");

// メールを送信する
if ($mailer->send($message)) {
    echo 'メールを送信しました。';
}

Yahoo!アカウントを使う

送信する

:link: Yahoo!メールのSMTP設定

Yahoo!の場合、メールアドレスからドメインを除いたものがユーザー名となります。
また、TLSではなくSSLで、ポート番号もGmailとは異なるのでその部分だけ修正します。

抜粋
$username = '<ユーザー名>';
$from = $username . '@yahoo.co.jp';

// 送信設定
$transport = (new Swift_SmtpTransport('smtp.mail.yahoo.co.jp', 465, 'ssl'))
    ->setUsername($username)
    ->setPassword('<パスワード>');

注意: 暗号化されない

上のようにSSLで送信するよう設定していますが、なぜか@yahoo.co.jpでのメール送信は暗号化されません。

002.png

オレオレ証明書を作ってS/MIMEで暗号化することもできるようですが、どのみち本番環境では使わないのでこのままにしておきます。

その他