【Perl】E-maiを送信する
ちょっと廃れてきたと感じるPerlをあえて使って,E-mailを送信するプログラムを作ってみました.
送信用アドレスは,GoogleだとけっこうネットにのってるのであえてYahooで実験してみました.
use utf8;
use Encode;
use strict;
use warnings;
# メール送るのに必要となるモジュール
use Authen::SASL;
use MIME::Base64;
use Net::SMTP;
sub Notify{
my $name = shift;
my $price = shift;
my $url = shift;
my $store = shift;
#send E-mail
my $SMTP_CONF =
{host=> 'smtp.mail.yahoo.co.jp', #yahooのsmtpサーバを送信用に指定
port=> '587', # ドメインによって違います
from=> '[email protected]', #送信用ヤフーメールアドレスを入力
return_path=> '[email protected]', #上に同じ
auth_uid=> '[email protected]', #上に同じ
auth_pw=> 'password' #Yahooアカウントのパスワード
};
main($name,$price,$url,$store);
sub main {
my $name = shift;
my $price = shift;
my $url = shift;
my $store = shift;
#以下のrecievingを替えて受信先のアドレスとして指定してください.
publish_test_mail(['[email protected]'],$name,$price,$url,$store);
}
sub publish_test_mail {
my ($mailto ) = shift; #default
my $name = shift;
my $price = shift;
my $url = shift;
my $store = shift;
my $subject_org = '在庫を確認しました'; # メールのタイトル<img width="382" alt="email.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/1dc8d0bc-d073-fac6-bf4f-ec612665b989.png">
my $subject = Encode::encode('MIME-Header-ISO_2022_JP', $subject_org);
my $display_deduction = abs($deduction);
#mailtoがない場合、送信は行いません. for debug
if( ref($mailto) ne "ARRAY" or @$mailto < 1 ){
return undef;
}
my $mailto_str = join(',', @$mailto );
my $message =<<EOF;
# 以下,メールの中身になるので適せん変えてください.変数もきちんと反映されます
Hello! This E-mail is automatically sent from Perl program.
Please check the item
【NAME】: $name
【STORE】: $store
【PRICE】 :¥$price
【URL】 : $url
EOF
#メールのヘッダーを構築
my $header = << "MAILHEADER_1";
From: $SMTP_CONF->{from}
Return-path: $SMTP_CONF->{return_path}
Reply-To: $SMTP_CONF->{return_path}
To: $mailto_str
MAILHEADER_1
$header .=<<"MAILHEADER_2";
Subject: $subject
Mime-Version: 1.0
Content-Type: text/plain; charset = "ISO-2022-JP"
Content-Transfer-Encoding: 7bit
MAILHEADER_2
$message = encode('iso-2022-jp',$message);
my $smtp = Net::SMTP->new($SMTP_CONF->{host},
Hello=>$SMTP_CONF->{host},
Port=> $SMTP_CONF->{port},
Timeout=>20,
);
unless($smtp){
my $msg = "can't connect smtp server: $!";
die $msg;
}
$smtp->auth($SMTP_CONF->{auth_uid}, $SMTP_CONF->{auth_pw}) or
die "can't login smtp server";
$smtp->mail($SMTP_CONF->{from});
$smtp->to(@$mailto);
$smtp->data();
$smtp->datasend("$header\n");
$smtp->datasend("$message\n");
$smtp->dataend();
$smtp->quit;
}
}
# 今回はここで変数をあえて作って,関数に引数として渡します.
my $name = "PlayStation4"
my $price = "30000"
my $url = "yodobashi.com"
my $store = "YodobashiCamera"
&Notify($name,$price,$url,$store);
結果
Author And Source
この問題について(【Perl】E-maiを送信する), 我々は、より多くの情報をここで見つけました https://qiita.com/DisneyAladdin/items/1f5b67727d048f71c4c6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .