下の画像のように、ローカル環境から自分宛てに手軽にメールを送信できます。
SMTP設定をその都度変えられるので、XAMPPに付属しているsendmailを使うよりも便利だと思います。
環境
- Windows 10
- XAMPP 7.2.2
- Composer 1.6.5
- swiftmailer 6.1.2
swiftmailerをインストール
PowerShell
> composer require "swiftmailer/swiftmailer:^6.0"
Googleアカウントを使う
準備
メール送信に使いたいGoogleアカウントでログインした上で、下記のページを開きます。
https://myaccount.google.com/lesssecureapps
そして、「安全性の低いアプリの許可」を有効にします。
送信する
Basic Usage
Encrypted SMTP
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!アカウントを使う
送信する
Yahoo!の場合、メールアドレスからドメインを除いたものがユーザー名となります。
暗号化はできないので、平文で送ります。
ポート番号は587
です。
抜粋
$username = '<ユーザー名>';
$from = $username . '@yahoo.co.jp';
// 送信設定
$transport = (new Swift_SmtpTransport('smtp.mail.yahoo.co.jp', 587))
->setUsername($username)
->setPassword('<パスワード>');
暗号化について
以前から、SSLで送るよう指定しても下記のように平文になっていました。
しかし、2018年7月31日に動作をあらためて確認したところ、SSLを指定するとswiftmailerがエラーで止まるようになりました。
よって、平文で送るしかありません。
オレオレ証明書を作ってS/MIMEで暗号化することもできるようですが、どのみち本番環境では使わないのでこのままにしておきます。
その他
- HTMLメールを送りたい: Setting the Body Content
- 日本語の文字化け対策: Using Swift Mailer for Japanese Emails