PHPでメール送信はQdmail+Qdsmtpが簡単便利というわけで使い方メモ
久々の更新です。2013年もどうぞよろしくお願いしまっす。
2012年末には今年を振り返って記事書いてみようかなんて妄想しつつどたばたしててもう3月。早いものでーす。
今回は故あってPHPでメール送信がしたい感じになったので良い方法はないかと探してみたところ「Qdmail」という便利でステキなライブラリがあったので作者さんに感謝しつつ使わせて頂きました。
事の発端
定期的にメールで送信しなきゃならないファイルってありますよね?ありますあります。
それを手動でやるのはちょっとめんど・・・大変。
ここはひとつ、PHPで勝手にやってくんねーかなーというわけです。
メール送信だけならPHPの関数でできるそうですが、設定がめんどくさそうだし添付ファイルつけるのもめんどくさそうな感じだったので、というか、まず最初にQdmailが出てきたので使わせて頂くことにしました。
さらにQdmailだけだと小難しい設定が必要な感じで困っていたところ、Qdsmtpもあわせて使うとさらに楽ちんっぽかったので表題の組み合わせとなりました。
Qdmail&Qdsmtp便利ー!
この記事では添付ファイル付きメールを送信することができるPHPをご紹介。
テスト環境はMAMP+PHP 5.3.2です。
準備
今回は下記のようなファイル構成です。
- test.php・・・本体的なファイル
- qdmail.php・・・Qdmailのファイル
- qdsmtp.php・・・Qdsmtpのファイル
- mosimosi.csv・・・添付するファイル
ダウンロードは下記から。
test.php
いきなりですが中身はこんなのです。
<?php if(isset($_REQUEST['submit'])) { require_once("qdmail.php"); $date = date("Y/m/d H:i"); $message = <<<EOF いまなにしてますかー? ただいまは{$date}です。 EOF; $mail = new Qdmail(); $mail -> smtp(true); $param = array( 'host' => 'smtp.dosukoi.com', //smtpサーバーのアドレス 'port'=> 587 , //ポート番号 'protocol' => 'SMTP_AUTH', //認証方法 'user' => 'kuwabara@hogehoge.com', //smtpサーバーのユーザー名 'pass' => 'password', //smtpサーバーのパスワード 'from' => 'kuwabara@hogehoge.com', //発信元メールアドレス ); $mail -> smtpServer($param); $mail -> to('kogi@hogehoge2.com'); //宛先 $mail -> subject('PHPでメール送信してみます'); //タイトル $mail -> text($message); //メッセージ本文 $mail -> attach('./mosimosi.csv'); //添付ファイルつける $return_flag = $mail ->send(); //送信 if($return_flag) { $sys_msg = "メールを送信しました。"; } else { $sys_msg = "メールの送信に失敗しました。"; } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf8" /> <title>とにかくメールを送信するよ</title> </head> <body> <h1>とにかくメールを送信します</h1> <form aciton="test.php"> <button type="submit" name="submit">送信</button> </form> <?= $sys_msg ?> </body> </html>
送信ボタンを押すとメールが送信されるというPHPです。
ハマったところ
Qdsmtpのサイトでは下記のサンプルコードが紹介されていたけれど、
$param = array( 'host'=>'smtp.example.com',//メールサーバー 'port'=> 587 , //これはSMTPAuthの例。認証が必要ないなら 25 でOK。 'from'=>'from@example.com', // Return-path: になります。 'protocol'=>'SMTP_AUTH',// 認証が必要ないなら、'SMTP' 'user'=>'user_id@example.com', //SMTPサーバーのユーザーID 'pass' => 'sasuga99', //SMTPサーバーの認証パスワード );
これだと500エラーで動作せず。
原因がわからないけれど表記順を↑のtest.phpのように変更したら動きました。うーむなんでなんだろう。
Qdmail+Qdsmtp便利!
自動で送信するように組めば、携帯にメールが来なくて寂しいときや毎日同じでほとんど定型文みたいな業務報告メール、あとなんかとにかくもうなんかいろいろ・・・?
Qdmail+Qdsmtpで簡単PHPメール送信でした。