use strict;
use warnings;
use utf8;
use Encode;
use MIME::Lite;
use HTTP::Date;
my $msg = MIME::Lite->new(
From => 'from@example.com',
To => 'to@example.com',
Subject => Encode::encode('MIME-Header-ISO_2022_JP', 'コンニチワ'),
# EncodeでMIME-Header-ISO_2022_JPが使えるのは
# Perl5.8.6以降同梱のもの
Type => 'text/plain; charset="ISO-2022-JP"',
Encoding => '7bit',
Data => encode('iso-2022-jp', '元気でやってるかー?'),
);
$msg->send();
use strict;
use warnings;
use utf8;
use Encode;
use MIME::Lite;
use HTTP::Date;
my $msg = MIME::Lite->new(
From => 'from@example.com',
To => 'to@example.com',
Subject => Encode::encode('MIME-Header-ISO_2022_JP', 'コンニチワ'),
# EncodeでMIME-Header-ISO_2022_JPが使えるのは
# Perl5.8.6以降同梱のもの
Type => 'text/plain; charset="ISO-2022-JP"',
Encoding => '7bit',
Data => encode('iso-2022-jp', '元気でやってるかー?'),
Datestamp => 0,Date => 'Mon, 23 Jun 2008 20:00:00 +0900',
);
$msg->send();
なんてかんじにするとヘッダに好きな時刻を設定できます。
さて、時刻文字列を作る方法ですが、5つぐらい探しました。
#!/usr/bin/perl
use strict;
use warnings;
sub datestr0 {
# UNIXのdateコマンド使う方法
# dateコマンドの動作が違と動かない
(local $_ = `date -R`) =~ s/\n//sgo;
return $_;
}
sub datestr1 {
# モジュールを使わない方法
# via http://tech.bayashi.net/pdmemo/sendmailbyperl.html
my ( $sec, $min, $hour, $mday, $mon, $year, $wday )
= localtime( time );
my @week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
my @month = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' );
my $d = sprintf( "%s, %d %s %04d %02d:%02d:%02d +0900",
$week[$wday], $mday, $month[$mon],
$year + 1900, $hour, $min, $sec,
);
return $d;
}
sub datestr2 {
# HTTP::Dateモジュールを使用
# via http://ja.doukaku.org/24/nested/
use HTTP::Date;
my $tz = +9;
( my $date = HTTP::Date::time2str( time + $tz * 3600 ) )
=~ s/GMT/sprintf( '%+03d00', $tz )/e;
return $date;
}
sub datestr3 {
# Date::Manipモジュールを使用
# via http://search.cpan.org/~sbeck/Date-Manip-5.54/lib/Date/Manip.pod
use Date::Manip;
return UnixDate('today', '%g');
}
sub datestr4 {
# DateTime::Format::Mailモジュールを使用
# via http://search.cpan.org/~sbeck/Date-Manip-5.54/lib/Date/Manip.pod
use DateTime;
use DateTime::Format::Mail;
return DateTime::Format::Mail->format_datetime(
DateTime->now(
time_zone => 'Asia/Tokyo',
)
);
}
print datestr0()."\n";
print datestr1()."\n";
print datestr2()."\n";
print datestr3()."\n";
print datestr4()."\n";
__END__
実行結果:
$ perl date.pl
Mon, 23 Jun 2008 19:49:23 +0900
Mon, 23 Jun 2008 19:49:23 +0900
Mon, 23 Jun 2008 19:49:23 +0900
Mon, 23 Jun 2008 19:49:24 +0900
Mon, 23 Jun 2008 19:49:24 +0900
$
Mac OS 10.5.3 環境において、ネットワークサーバに保存したファイルを開こうとすると、エラーメッセージ 「Could not complete your request because it is not a valid Photoshop document (Photoshop ファイルが無効のため、要求された動作を完了できません。)」 が表示され、ファイルを開けない。
理由 (Reason)
これは、アップル社と弊社において既知の問題です。
解決方法 (Solutions)
問題を解決するためには、以下の A. ~ B. のいずれかを実行します。
A. ネットワークサーバを使用せずに作業する
ローカルディスク上でファイルを完成させてから、そのファイルをネットワークサーバにコピーしてください。
B. 「別名で保存」で保存する
重要 : この回避方法は、弊社での検証を行っていません。弊社は、ファイルをネットワークドライブに直接保存することについてサポートしていません。
うわーん
追加情報 (Additional Information)
サーバへの直接書き込みは保存機能のコンプレックスレベルを上げるため、弊社はサーバにファイルを直接保存することを推奨していません。
複数のファクターが、ネットワーク経由(ファイルサーバ、ルータ、ブリッジ、ネットワークカード、ソフトウェア、ケーブル、コネクタ、電源ケーブルおよび電源を含む)のデータトランスミッションに影響します。ネットワーク接続が突然途切れたり、データ損失やアプリケーションエラーのリスクが増したりします。
交信中あるいは受信中、ネットワークソフトはデータが送られ、また、受け取られたことを確認します。その検証の程度はネットワークソフトのパッケージによるものであり、OS側から操作できない場合もあります。ネットワークに接続しファイルを保存しようとした場合、「Could not complete the request because the file is locked. (ファイルがロックされているため、要求された動作を完了できません。)」 「Could not save because of a disk error. (ディスクエラーのため、保存できません。)」 などのエラーが発生する場合があります。しかしながら、ネットワークならびにOSは、Photoshopファイルまたはスクラッチディスクファイルがダメージまたは不完全な情報を含んでいることを認識していない場合があります。