search
LoginSignup
16

More than 3 years have passed since last update.

posted at

updated at

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

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

001.png

環境

  • Windows 10
  • XAMPP 7.2.2
  • Composer 1.6.5
  • swiftmailer 6.1.2

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!の場合、メールアドレスからドメインを除いたものがユーザー名となります。
暗号化はできないので、平文で送ります。
ポート番号は587です。

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

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

暗号化について

以前から、SSLで送るよう指定しても下記のように平文になっていました。

002.png

しかし、2018年7月31日に動作をあらためて確認したところ、SSLを指定するとswiftmailerがエラーで止まるようになりました。
よって、平文で送るしかありません。
オレオレ証明書を作ってS/MIMEで暗号化することもできるようですが、どのみち本番環境では使わないのでこのままにしておきます。

その他

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
16