memo

memo dayo.

添付ファイル数の上限は?


http://d.hatena.ne.jp/pmjgda/20100204/1265266348
つづき。


■準備
PEARとかを置いておく。
・send.php

<?php
// ---- require ----
define('DIR_PEAR', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'PEAR' . DIRECTORY_SEPARATOR);
set_include_path(get_include_path() . PATH_SEPARATOR . DIR_PEAR);
require_once(DIR_PEAR . 'Mail.php');
require_once(DIR_PEAR . 'Mail/mime.php');
// ==============================================
// ---- ini set ----
ini_set('memory_limit', -1); 
ini_set('max_execution_time', 0);

// ---- define ----
define('DIR_GOMI', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'gomi' . DIRECTORY_SEPARATOR);
define('SMTP_SERVER' , '????');
define('SMTP_PORT'   , '465');
define('SMTP_TIMEOUT', '30');
define('SMTP_USR'    , '????');
define('SMTP_PWD'    , '????');

// ---- init ----
$mail_to   = '????';
$mail_from = '????';
$mail_sbj  = 'test dayo';
$mail_body = 'takusan no file';

// ---- attach ----
$param_smtp = array(
				 'host'     => 'tls://' . SMTP_SERVER
				,'port'     => SMTP_PORT
				,'auth'     => true
				,'debug'    => false
				,'username' => SMTP_USR
				,'password' => SMTP_PWD
			);
$param_head = array (
				 'To'      => $mail_to
				,'From'    => $mail_from
				,'Subject' => $mail_sbj
			);
$param_body = array(
				 'head_charset' => 'ISO-2022-JP'
				,'text_charset' => 'ISO-2022-JP'
			);
$obj_mime = new Mail_Mime("\n");
$obj_smtp = Mail::factory('smtp', $param_smtp);
$obj_mime->setTxtBody($mail_body);

//for ($i = 0; $i < 915545; $i++) {
for ($i = 0; $i < 100000; $i++) {
	$file_path = DIR_GOMI;
	$zero_pad  = str_pad('' . $i, 9, '0', STR_PAD_LEFT);

	$file_path .= substr($zero_pad, 0, 3);
	$file_path .= DIRECTORY_SEPARATOR;
	$file_path .= substr($zero_pad, 3, 3);
	$file_path .= DIRECTORY_SEPARATOR;
	$file_path .= substr($zero_pad, 6, 3);
	$file_path .= DIRECTORY_SEPARATOR;
	$file_path .= 'a.txt';

	if ($obj_mime->addAttachment($file_path) !== true) {
		die($i);
	}

	unset($file_path);
	unset($zero_pad );
}

$obj_body = $obj_mime->get($param_body);
$obj_head = $obj_mime->headers($param_head);

// ---- send ----
$flg = $obj_smtp->send($to_addr, $obj_head, $obj_body);
if (PEAR::isError($flg)) {
	echo "ng\n";
} else {
	echo "ok\n";
}


■実行

php -f send.php


■memo
・実行してから寝る。
・100000ファイル送受信できた。
・けど、やめたほうがいい。