SQLの窓

2018年02月27日


STYLE 要素を追加して、CSS テキストをセットして、jQuery で CSS に important 指定を追加する。

これが自然だと思います。

だいたいにおいて、important を使いたい場合は既存の環境を完全に把握できていないからこそ頼みの綱的な事が多々あるので、要素単位の cssText で塗り替えるのは違うかと。
$("<style></style>")
	.text( "body{ background-color:white!important }")
	.appendTo(document.head);

以下がデベロッパーツールで見た結果
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <style>body{background-color:white!important }</style>
</head>






タグ:jquery important
posted by lightbox at 2018-02-27 21:27 | jQuery | このブログの読者になる | 更新情報をチェックする

Windows PHP(Pear)で、Gmail(SSL/465)を使ってメールを送る

2018/02/27 : PMailServer Version 1.91 フリー版 で送信テストをしました。
host : 192.168.1.16, port : 25

関連する記事

PMailServer Version 1.91 フリー版 を Windows10 にインストールして、Windows7 の PHP よりアクセス

Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
※ 重要 アプリが正しくても、サーバーでログインを拒否されている場合があります。実際問題、WEBブラウザでログインしに行くと、難読文字画像で認証をされられた事が Hotmail ではありました。Google でも同様の事があると他の記事で読んだ事があるので注意して下さい。 Gmail 側で安全性の低いアプリの許可を『有効』にする必要がありました。 Pear なんで、WEBサーバー(Unix等)でも動くと思いますが、その場合はWEBサーバ用のメールアドレスで sendmail が使えると思います。なので、わざわざ Pear を使う必要は無いですが、フリーの WEBサーバだと、sendmail は使え無いのでその時は試してみる価値はあります。 Windows でPHPからメールを送信するには Pear が必要です。( もう一つの選択肢として、CDO.Message を使う事もできます ) あるいは、fake sendmail for windows を使用できます (1) php.ini の OpenSSL を有効にする
extension=php_openssl.dll
(2) php.ini の error_reporting に STRICT エラー用の設定を行う
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
※ ソースで error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT); でも可 (3) Pear の関係ファイルをダウンロード Pear
PEAR.php だけでいいです
Mail
Mail フォルダと、Mail.php
Net_SMTP
SMTP.php ( Net ディレクトリ内 )
Net_Socket
Socket.php ( Net ディレクトリ内 )
Net_SMTP の中に以下のようなコメントがあります
     * If you have SSL support in PHP, you can connect to a server
     * over SSL using an 'ssl://' prefix:
     *
     *   // 465 is a common smtps port.
     *   $smtp = new Net_SMTP('ssl://mail.host.com', 465);
     *   $smtp->connect();
send_test.php(UTF-8N で保存)
<?php
error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT);

header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

require_once("Mail.php");

mb_language("ja");
mb_internal_encoding("UTF-8");

// ***********************************************
// 通信のデバッグ表示
// ***********************************************
$debug = true;

// ***********************************************
// SMTP 接続設定
// ***********************************************
$settings = array(
	"host"		=> "ssl://smtp.gmail.com",
	"port"		=> "465",
	"auth"		=> true,
	"username"	=> "ユーザ名@gmail.com",
	"password"	=> "パスワード",
	"debug"		=> $debug
);

// ***********************************************
// メールアドレス
// ***********************************************
$to_address = "宛先メールアドレス";
$from_address = "ユーザ名@gmail.com";

// ***********************************************
// メールヘッダー
// ***********************************************
$subject = "Gmail(SSL/465)を使ってPHPでメールを送る";
$subject = mb_convert_encoding($subject,"iso-2022-jp");
$to_header = mb_convert_encoding("宛先","iso-2022-jp");
$from_header = mb_convert_encoding("差出人","iso-2022-jp");

mb_internal_encoding("iso-2022-jp");

$subject = mb_encode_mimeheader( $subject );
$to_header =  mb_encode_mimeheader( $to_header ) . " <{$to_address}>";
$from_header =  mb_encode_mimeheader( $from_header ) . " <{$from_address}>";

mb_internal_encoding("UTF-8");

$headers = array(
	"To"		=> $to_header,
	"From"		=> $from_header,
	"Subject"	=> $subject
);

// ***********************************************
// 本文
// ***********************************************
$body="本文";
$body = mb_convert_encoding($body,"iso-2022-jp");

// ***********************************************
// SMTP 接続設定をオブジェクトに設定
// ***********************************************
$smtp = Mail::factory("smtp", $settings);

// ***********************************************
// 送信
// ***********************************************
print "<pre>"; 
$result = $smtp->send(
	$to_address,
	$headers,
	$body );
print "</pre>"; 

if ( PEAR::isError($result) ) {
	print "メール送信エラー:" . $result->getMessage();
}

?>
OK

※ Debug フラグを true にしているので、トレースが出力されます

▼ 以下は関数にしたものです
// ***********************************************
// メール送信
// ***********************************************
function send_mail($user,$to,$pass,$message,$subject) {

	global $ErrorMessage;

	error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT);

	// この場合は実行する PHP と同じフォルダに Mail.php があるという前提です
	// それ以外の場合は、
	// set_include_path( get_include_path() . PATH_SEPARATOR . "Mail.phpのあるフォルダ" );
	// を実行します
	require_once("Mail.php");

	mb_language("ja");
	mb_internal_encoding("UTF-8");
	
	// ***********************************************
	// 通信のデバッグ表示
	// ***********************************************
	$debug = false;
	
	// ***********************************************
	// SMTP 接続設定
	// ***********************************************
	$settings = array(
		"host"		=> "ssl://smtp.gmail.com",
		"port"		=> "465",
		"auth"		=> true,
		"username"	=> $user,
		"password"	=> $pass,
		"debug"		=> $debug
	);
	
	// ***********************************************
	// メールアドレス
	// ***********************************************
	$to_address = $to;
	$from_address = $user;
	
	// ***********************************************
	// メールヘッダー
	// ***********************************************
	$subject = mb_encode_mimeheader( mb_convert_encoding($subject,"iso-2022-jp") );
	
	$to_header =  mb_encode_mimeheader( mb_convert_encoding("宛先","iso-2022-jp") ) . " <{$to_address}>";
	$from_header =  mb_encode_mimeheader( mb_convert_encoding("差出人","iso-2022-jp") ) . " <{$from_address}>";
	
	$headers = array(
		"To"		=> $to_header,
		"From"		=> $from_header,
		"Subject"	=> $subject
	);
	
	// ***********************************************
	// 本文
	// ***********************************************
	$body=$message;
	$body = mb_convert_encoding($body,"iso-2022-jp");
	
	// ***********************************************
	// SMTP 接続設定をオブジェクトに設定
	// ***********************************************
	$smtp = Mail::factory("smtp", $settings);
	
	// ***********************************************
	// 送信
	// ***********************************************
	print "<pre>"; 
	$result = $smtp->send(
		$to_address,
		$headers,
		$body );
	print "</pre>"; 
	
	if ( PEAR::isError($result) ) {
		// print "メール送信エラー:" . $result->getMessage();
		$ErrorMessage = "メール送信エラー:" . $result->getMessage();
	}

	

}
PMailServer Version 1.91 フリー版 でのログ
DEBUG: Recv: 220 PMailServer Version 1.91 �t���[�� ESMTP PMailServer [Free Edition] 1.91; Tue, 27 Feb 2018 17:36:11 
DEBUG: Send: EHLO localhost

DEBUG: Recv: 250-ENHANCEDSTATUSCODES
DEBUG: Recv: 250-PIPELINING
DEBUG: Recv: 250-8BITMIME
DEBUG: Recv: 250-AUTH PLAIN LOGIN CRAM-MD5
DEBUG: Recv: 250-AUTH=PLAIN LOGIN CRAM-MD5
DEBUG: Recv: 250-HELP
DEBUG: Recv: 250 OK
DEBUG: Send: AUTH LOGIN

DEBUG: Recv: 334 VXNlcm5hbWU6
DEBUG: Send: bGlnaHRib3g=

DEBUG: Recv: 334 UGFzc3dvcmQ6
DEBUG: Send: cGFzc3dvcmQ=

DEBUG: Recv: 235 2.0.0 Authentication success.
DEBUG: Send: MAIL FROM:

DEBUG: Recv: 250 2.1.0 ... Sender ok
DEBUG: Send: RCPT TO:

DEBUG: Recv: 250 2.1.5 ... Recipient ok
DEBUG: Send: DATA

DEBUG: Recv: 354 Enter mail, end with "." on a line by itself (1)
DEBUG: Send: To: =?ISO-2022-JP?B?GyRCMDhAaBsoQg==?= 
From: =?ISO-2022-JP?B?GyRCOjk9UD9NGyhC?= 
Subject: PMailServer Version 1.91 =?ISO-2022-JP?B?GyRCJVUlaiE8SEcbKEIgGyRCJEsbKEIg?=
 =?ISO-2022-JP?B?UEhQIBskQiRHQXc/LhsoQg==?=


DEBUG: Send: $BK\J8(B
DEBUG: Send: 
.

DEBUG: Recv: 250 2.0.0 yx1S2MGvv2CB7brTdl1Af5fC40k03OJg Message accepted for delivery
DEBUG: Send: QUIT

DEBUG: Recv: 221 2.0.0 PMailServer Version 1.91 �t���[�� closing connection
OK
※ 化けてるのは、PMailServer の登録時に サーバー名に日本語を使用したからです。
posted by lightbox at 2018-02-27 17:57 | PHP + 通信 | このブログの読者になる | 更新情報をチェックする

2018年02月25日


PMailServer Version 1.91 フリー版 を Windows10 にインストールして、Windows7 の PHP よりアクセス

PMail Server ダウンロードファイルVector より pms191f.zip をダウンロードして解凍します(その場所がインストールフォルダになるので、pmman.exe 実行前に必要ならば場所を移動させます)。その後、pmman.exe を実行すると、ウィザード( この記事に一連の入力ダイアログの画像を設置しています )が開始されるので簡単な入力した後、テスト用のユーザを一件作ればテスト環境は出来上がります。

受信テストのコードは、『Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信』を使って行います( USER か APOP )

送信の pear 環境は Windows PHP(Pear)で、Gmail(SSL/465)を使ってメールを送る を参照して下さい。PMailServer Version 1.91 フリー版 のコードはこの記事の最後にあります。



PMail Server の フリー版 は必ず POP before SMTP になる仕様になっていますので、アプリケーションからメールの送信を行う場合はメーラで手動受信するか、アプリケーションから前もって受信操作を行う必要があります。

ファイアーウォールの詳細設定で、受信の新しい規則を作成

ポートの 11025 に関して受信が可能になるように規則を二つ追加します

初期ウィザード

ローカルネットワークの二つの PC でテストを行うので、サーバのアドレスは IP アドレスで設定します。

▼ 作成します


▼ 設定をを行います


▼ 次へ


▼ 管理ドメインは、ローカルネットワークでは何でもよさそうです。


▼ 設定しません


▼ ローカルネットワークなので使わないとは思いますが ipconfig /all で読み取ったアドレスを設定します


▼ これは本当になんでもいいみたいですが、できれば日本語は使用しないほうがいいです。


▼ フリー版では使用できません


▼ 推奨アカウントは必要なら作成しますが、特に目的が無い場合は作成しません








※ サービスは自動起動に設定されるので、手動に切り替えておきます。

ユーザの作成



受信用データの作成

メールクライアントで設定を追加して、受信した後メールを自分自身に送って作成します。





※ この後、パスワードを登録します。

実行コード

メールクライアントまたは PHP で受信した後、PHP で実行して送信します。
<?php
error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT);

header( "Content-Type: text/html; charset=utf-8" );
header( "Expires: Thu, 19 Nov 1981 08:52:00 GMT" );
header( "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" );
header( "Pragma: no-cache" );

require_once("Mail.php");

mb_language("ja");
mb_internal_encoding("UTF-8");

// ***********************************************
// 通信のデバッグ表示
// ***********************************************
$debug = true;

// ***********************************************
// SMTP 接続設定
// ***********************************************
$settings = array(
	"host"		=> "192.168.1.16",
	"port"		=> "25",
	"auth"		=> true,
	"username"	=> "lightbox",
	"password"	=> "password",
	"debug"		=> $debug
);

// ***********************************************
// メールアドレス
// ***********************************************
$to_address   = "lightbox@lightbox-pc";
$from_address = "lightbox@lightbox-pc";

// ***********************************************
// メール用変換文字コード
// ***********************************************
$mail_enc = "iso-2022-jp";	// JIS

// ***********************************************
// メールヘッダー
// ***********************************************
$subject = "PMailServer Version 1.91 フリー版 に PHP で送信";

// 1) mb_convert_encoding  : 内部エンコーディングから iso-2022-jp に変換
// 2) mb_encode_mimeheader : MIMEヘッダの文字列をエンコードする
// ( =?文字コード?符号方式?符号化された文字列?= というようなメール用の変換 )
$subject = mb_convert_encoding($subject,"iso-2022-jp");
$to_header = mb_convert_encoding("宛先","iso-2022-jp");
$from_header = mb_convert_encoding("差出人","iso-2022-jp");

mb_internal_encoding("iso-2022-jp");

$subject = mb_encode_mimeheader( $subject );
$to_header =  mb_encode_mimeheader( $to_header ) . " <{$to_address}>";
$from_header =  mb_encode_mimeheader( $from_header ) . " <{$from_address}>";

mb_internal_encoding("UTF-8");

$headers = array(
	"To"		=> $to_header,
	"From"		=> $from_header,
	"Subject"	=> $subject
);

// ***********************************************
// 本文( JIS 変換のみ )
// ***********************************************
$body="本文";
$body = mb_convert_encoding($body, $mail_enc );

// ***********************************************
// SMTP 接続設定をオブジェクトに設定
// ***********************************************
$smtp = Mail::factory("smtp", $settings);

// ***********************************************
// 送信
// デバッグ出力対応で、PRE要素 を付加しています
// ***********************************************
print "<pre>"; 

$result = $smtp->send($to_address, $headers, $body );

print "</pre>"; 

if ( PEAR::isError($result) ) {
	print "メール送信エラー:" . $result->getMessage();
}

?>
OK




posted by lightbox at 2018-02-25 21:10 | フリーソフト | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

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

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