欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Perl之Net::SMTP

程序员文章站 2022-04-29 13:49:48
...

用户Perl写个脚本,使用Net::SMTP模块发邮件:

 

#!/usr/bin/perl -w

use warnings;

use utf8;

binmode(STDIN, ':encoding(utf8)');

binmode(STDOUT, ':encoding(utf8)');

binmode(STDERR, ':encoding(utf8)');

 

use JSON;

use MIME::Lite;

#use Net::SMTP_auth;  #需要安装模块

use Net::SMTP; 

use Data::Dumper;

use IO::Socket::SSL;

use Encode;

#use MIME::Base64;

 

###以腾讯企业邮箱为例###

 

#smtp邮件服务器和端口

my $smtpHost = 'smtp.exmail.qq.com';

my $smtpPort = '25';

my $sslPort = '465';

 

#smtp服务器认证用户名及授权码

# 授权码 设置 参考链接: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

my $username = 'xx@qq.com';

my $password = 'xxxxx';  # 授权码

my $from = 'xx@qq.com';

 

#获得邮件域名部分,用于连接的时候表名身份

my @hello = split /\@/,$from;

 

my ($REQ) = @ARGV;  # 脚本的输入参数:json格式的字符串,包含 to(接收者邮箱地址),subject(邮箱标题),body(邮箱内容,可能是个网站链接)

my $result = "failed";

if (!$REQ) {

    print $result;

    exit;

}

 

#$json = JSON->new;

my $input_json = decode_json($REQ); #$json->decode($REQ);

if ($input_json->{obj} eq "mail" && length($input_json->{to})) {

    my $datasend = "";

    my $to = $input_json->{to};

    my $subject = $input_json->{subject};

    my $cc;

 

    my $msg = MIME::Lite->new(

        From   => $from,

        To     => $to,

        Cc     => $cc,

        Subject=> $subject,

        Type   =>'text/html;charset=UTF-8',  #设置成html格式,链接地址 会自动配上超链接

        Data   => $input_json->{body},

        #Type    =>'multipart/related',

    );

    $msg->attr("Content-Type" => "text/html;charset=UTF-8");

    $msg->attr("Content-Transfer-Encoding" => "7bit");

    my $smtp = Net::SMTP->new($smtpHost, Hello => $hello[1], Timeout => 10, SSL => 1, Debug => 1,);#采用SSl方式,  开启Debug => 1, 

    if ($smtp && $smtp->auth($username, $password)) {

        #发送邮件

        $smtp->mail($from);

        $smtp->to($to);

        $smtp->data();

        $smtp->datasend(Encode::encode( "utf8", $msg->as_string ));

        $smtp->datasend("\r\n");

        $smtp->dataend();

        $smtp->quit();

        $result = "success";

    } else {

        $result = "auth failed";

    }

}

print $result;

 

exit;

 

 

相关标签: perl json 脚本