SQLの窓

2015年10月03日


PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信

ひさしぶりにテスト( 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 + 通信の最新記事】
posted by lightbox at 2015-10-03 21:44 | PHP + 通信 | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり