ひさしぶりにテスト( Windows7 ) しようとすると、Gmail からエラーが返って来ましたが、Gmail 側で安全性の低いアプリの許可を『有効』にする必要がありました。 また、php 側では、php_com_dotnet.dll を php.ini で有効にする必要があります。 ※ CDO.Message に関する詳細は、ソース内に URL を記述しています 関連する記事 Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信 本来は、VBScript で実行するものですが、PHP が分かる人なら、こちらのほうがいろいろ応用がきいて使い勝手もいいと思います。 ▼ バッチファイル ------------------------------------------------------ @echo off setlocal set PATH=c:\php;%PATH% php mail.php "題名" "本文\nで す\nよ" endlocal ------------------------------------------------------ mail.php
<?php // *********************************************** // バッチファイル内容 // setlocal は、環境変数を一時的に設定する為に使用します // php.exe は、c:\php にあります // *********************************************** /* @echo off setlocal set PATH=c:\php;%PATH% php mail.php "題名" "本文\nで す\nよ" endlocal */ // *********************************************** // php.ini で必要な拡張 // *********************************************** /* extension=php_com_dotnet.dll */ // *********************************************** // Gmail 側の設定 // *********************************************** /* 安全性の低いアプリの許可を『有効』にする https://myaccount.google.com/security?pli=1#connectedapps */ // *********************************************** // PHP の処理開始 // *********************************************** $strFrom = "私です <ユーザ名@gmail.com>"; $strTo = "あなたです <宛先メールアドレス>"; $strServer = "smtp.gmail.com"; $nPort = 465; $strUser = "ユーザ名@gmail.com"; $strPass = "パスワード!"; // *********************************************** // CDO.Message( CDO for Windows 2000 ) // *********************************************** $cdo = new COM( "CDO.Message" ); $cdo->From = $strFrom; $cdo->To = $strTo; // *********************************************** // 題名 // *********************************************** $cdo->Subject = $argv[1]; // *********************************************** // バッチファイルで引渡した本文文字列内の \n を実際の改行に変換 // *********************************************** $data = str_replace( "\\n", "\n", $argv[2] ); $cdo->Textbody = $data; // *********************************************** // 送信情報オプション // *********************************************** $cdo->Cc = "メールアドレス1,メールアドレス2"; //$cdo->Bcc = ""; $cdo->Htmlbody = "<img src=\"http://winofsql.jp/image/winofsql.png\">"; // *********************************************** // ファイル添付 // *********************************************** $cdo->AddAttachment( "C:\\Users\\lightbox\\Desktop\\画像\\_img.jpg" ); // cdoSendUsingPort : 2 : Send the message using the network (SMTP over the network) // https://msdn.microsoft.com/en-us/library/ms527265.aspx. $cdo->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 2; // The name (DNS) or IP address of the machine hosting the SMTP service through which messages are to be sent. // https://msdn.microsoft.com/en-us/library/ms527294.aspx $cdo->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"] = $strServer; // The port on which the SMTP service specified by the smtpserver field is listening for connections. // https://msdn.microsoft.com/en-us/library/ms526227.aspx $cdo->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"] = $nPort; // Indicates that SSL should be used when sending messages using the SMTP protocol over the network. // https://msdn.microsoft.com/en-us/library/ms526975.aspx $cdo->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"] = true; // Specifies the authentication mechanism to use when authentication is required to send messages // to an SMTP service using a TCP/IP network socket. // https://msdn.microsoft.com/en-us/library/ms526600.aspx // 1 : Use basic (clear-text) authentication // https://msdn.microsoft.com/en-us/library/ms526961.aspx $cdo->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1; // ユーザとパスワード $cdo->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = $strUser; $cdo->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = $strPass; $cdo->Configuration->Fields->Update(); $cdo->Send(); // *********************************************** // レジストリ内容 // *********************************************** /* Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CLSID\{CD000001-8B95-11D1-82DB-00C04FB1625D}] @="CDOMessage Class" [HKEY_CLASSES_ROOT\CLSID\{CD000001-8B95-11D1-82DB-00C04FB1625D}\InprocServer32] @="C:\\Windows\\system32\\cdosys.dll" "ThreadingModel"="Both" [HKEY_CLASSES_ROOT\CLSID\{CD000001-8B95-11D1-82DB-00C04FB1625D}\ProgID] @="CDO.Message.1" [HKEY_CLASSES_ROOT\CLSID\{CD000001-8B95-11D1-82DB-00C04FB1625D}\Programmable] [HKEY_CLASSES_ROOT\CLSID\{CD000001-8B95-11D1-82DB-00C04FB1625D}\VersionIndependentProgID] @="CDO.Message" */ ?>
参考情報 メーラーからGmailへの接続時に認証(パスワード)のエラーが生じる場合の対処方法
|
【PHP + 通信の最新記事】
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP + cURL で Google Photo API の アクセストークンを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP の imap 関数( Windows のローカル )で、さくらインターネットのメールボックスの情報を取得する
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- ファイルのアップロードからそれを添付してメールを送るテンプレート(スケルトン)
- PHP : mb_send_mail を使用した自家用メール送信 API
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )
- PHP : リモートのファイルサイズを取得する
- ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする
- PHP の cURL で ftp サーバーにファイルをアップロードする(SSLなし)