QT SOLAR 愛島発電所
- 本日の発電量
- 0 kWh
- 現在の日射量
- 4 Wh/㎡
- 現在の外気温
- 2.5 ℃
(2025/01/29 07:10 更新)
QT SOLAR 愛島発電所
(2025/01/29 07:10 更新)
QT SOLAR 下増田発電所
(2025/01/29 07:13 更新)
QT SOLAR 北原東発電所
(2025/01/29 07:04 更新)
QT SOLAR 長久良辺発電所
(2025/01/29 06:56 更新)
QT SOLAR 白坂発電所
(2025/01/29 07:03 更新)
QT SOLAR 清水沢発電所
(2025/01/29 06:58 更新)
アラートメールの送信等を行うための外部のメールサーバーとのSMTPによる通信を実現します。TLS/STARTTLS (587) に対応しています。
SMTP over SSL (465) ではなく、SMTP TLS/STARTTLS (587)なので、ポートの指定は、587(通常)となります。
Gmailも使えますがログインとセキュリティから「安全性の低いアプリの許可: 有効」にする必要があります。
package SmtpUtility; use strict; use IO::Socket::SSL; use MIME::Base64; sub new { my $class = shift; # クラス名() my $self = { }; bless $self,$class; return $self; } sub request { my($self) = shift; my( $server, # mail.example.com(:587) $account, # mail account $password, # mail password $from, # from@mailaddress.com $to, # to@mailaddress.com $subject, # subject $body, # mail body $ref_attached # reference to file_hash("filename"=>"data") ) = @_; my $boundary = "----------boundary". time . "_" . $$; my ($host, $port, $socket, $receive, @keys); $account = encode_base64($account,''); $password = encode_base64($password,''); $subject = encode_base64($subject,''); $body = encode_base64($body,''); $body =~ s/.{76}/$&\n/g; if($server =~ /^(.+?):*(.\d+|)$/){ ($host, $port) = ($1, $2); }else{ die "Invalid Address"; } if(!$port){ $port = getservbyname('smtp','tcp'); } $socket = IO::Socket::INET->new (PeerAddr => $host, PeerPort => $port, Proto => 'tcp') or die "$! $host:$port"; sysread($socket,$receive,1024); print $socket <<END_OF_STARTTLS; EHLO localhost STARTTLS END_OF_STARTTLS sysread($socket,$receive,1024); IO::Socket::SSL->start_SSL($socket, SSL_hostname => $host ) or die $SSL_ERROR; print $socket "AUTH LOGIN\n"; sysread($socket,$receive,1024); print $socket "$account\r\n"; sysread($socket,$receive,1024); print $socket "$password\r\n"; sysread($socket,$receive,1024); print $socket "MAIL FROM: <$from>\r\n"; sysread($socket,$receive,1024); print $socket "RCPT TO: <$to>\r\n"; sysread($socket,$receive,1024); print $socket "DATA\r\n"; sysread($socket,$receive,1024); print $socket <<END_OF_HEADER; MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary=$boundary Content-Transfer-Encoding:Base64 From: $from To: $to Subject: =?utf-8?B?$subject?= END_OF_HEADER print $socket <<END_OF_BODY; --$boundary Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 $body END_OF_BODY @keys = keys(%$ref_attached); foreach( @keys ){ my($filename) = $_; my($name) = $_; $filename =~ s/(\W)/'%'.unpack("H2", $1)/ego; $name =~ s/(\W)/'='.unpack("H2", $1)/ego; my($data) = encode_base64($$ref_attached{$_},''); $data =~ s/.{76}/$&\n/g; print $socket <<END_OF_ATTACHMENT; --$boundary Content-Disposition: attachment; filename*=utf-8''$filename Content-Type: application/octet-stream; name="=?utf-8?Q?$name?=" Content-Transfer-Encoding: base64 $data END_OF_ATTACHMENT } print $socket "--$boundary--\r\n.\r\n"; sysread($socket,$receive,1024); close($socket); } 1;
使い方。
#!/usr/bin/perl use SmtpUtility; my $mail = SmtpUtility->new(); my $server = 'smtp.hoge.jp:587'; my $account = 'from@hoge.hp'; my $password = 'yourpassword'; my $from = 'from@hoge.jp'; my $to = 'to@foo.bar'; my $subject = "添付ファイル付きメールテスト"; my $body = <<EOD; これはテストです。 ファイルを添付しましたのでご確認下さい。 EOD my $file = "./image.jpg"; my $buf; my $size = -s $file; open(IN, $file); binmode(IN); read(IN, $buf, $size); close(IN); my %attachment = ( 'image.jpg' => $buf ); $mail->request( $server, $account, $password, $from, $to, $subject, $body, \%attachment );
今後検討すべきこと
宮城県仙台市太白区長町一丁目2-11
[運営者]
[発電所]
本ウェブサイト上のQT SOLAR 発電所は、グループ会社の発電所も含まれます。