`
lzqustc
  • 浏览: 209858 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Perl之Net::SMTP

    博客分类:
  • Perl
阅读更多

用户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 写的发邮件smtp

    在IT行业中,Perl常被用来编写自动化脚本,其中之一就是通过SMTP(Simple Mail Transfer Protocol)发送电子邮件。SMTP是互联网标准,用于从一台邮件服务器向另一台邮件服务器发送邮件。下面将详细介绍如何使用Perl...

    perl smtp发送邮件

    perl smtp 发送邮件 自动发送邮件

    perl发送邮件

    此外,一些邮件服务器可能需要SSL/TLS加密,这时可以使用`Net::SMTP::TLS`或`Net::SMTP::SSL`模块。 Perl发送邮件的功能非常灵活,不仅可以发送纯文本邮件,还可以添加附件、HTML内容以及多个收件人。通过学习和...

    Net_SMTP-1.6.2.tgz

    标题 "Net_SMTP-1.6.2.tgz" 指的是一个特定版本的 Perl 模块,Net::SMTP,被打包成 tarball 格式(tgz),版本号为 1.6.2。这个模块是 Perl 语言中用于发送 SMTP(Simple Mail Transfer Protocol)邮件的一个库。在 ...

    perl-toolkit:Perl示例脚本

    3. **Mail**:Perl可以用来发送和处理电子邮件,例如使用Email::Sender或者Net::SMTP模块。这些示例可能涵盖如何构建和发送邮件,甚至处理邮件服务器的交互。 4. **AWS-S3**:Amazon S3是亚马逊提供的云存储服务。...

    Mail-Sender-0.8.22

    my $transport = Email::Sender::Transport::SMTP::TLS->new( host => 'smtp.qq.com', port => 587, username => 'your_username', password => 'your_password', ); ``` 5. 发送邮件:使用`sendmail`函数,...

    SMPT PERL适合初学者

    my $ret = airNdrSendSmtpCmdSend($smtp, \&Net::SMTP::mail, $gIniParam{"SMTPRespTime"}, \$code, $mailf); ``` 这部分代码首先尝试创建一个`Net::SMTP`对象,并通过`airNdrSendSmtpCmdSend`子程序发送`hello`...

    perl自动发邮件

    my $transport = Email::Sender::Transport::SMTP::TLS->new( host => 'smtp.example.com', port => 587, username => 'your_username', password => 'your_password', ); sendmail($email, { transport => $...

    Perl的Email 发送程序与插件

    `Email::Sender`允许用户选择不同的SMTP策略,如`SMTP::Transport::TLS`支持安全的SMTP传输。 在Perl社区中,有许多插件可以增强邮件发送功能。例如,`Email::Sender::Plugin::SPF`可以检查发送者的SPF记录,防止...

    Network Programming With Perl

    《网络编程与Perl》这本书是Perl编程语言在网络应用领域的权威指南。它深入探讨了如何利用Perl来构建网络应用程序,处理网络协议,以及进行各种网络相关的任务。以下是对书中的主要知识点的详细阐述: 1. **Perl...

    perl-scripts:有用的Perl脚本和代码片段

    - **SMTP邮件**:Net::SMTP模块用于发送邮件。 8. **对象导向编程** - **类和对象**:Perl 5.6以后版本支持面向对象编程,可以定义类,创建对象。 - **继承**:子类可以通过`@ISA`数组实现对父类的继承。 - **...

    perl网络编程基础篇

    Perl是一种强大的脚本编程语言,尤其在文本处理和系统...《Perl网络编程基础篇》可能是这样一个起点,它会引导你进入Perl在网络世界中的奇妙之旅。通过阅读和练习其中的示例代码,你将能够掌握Perl网络编程的基本技能。

    PERL 网络编程

    FTP编程章节则涉及如何使用PERL的Net::FTP库进行文件传输,包括登录、上传、下载和目录管理等操作。这对于自动化文件同步或备份任务非常有用。 电子邮件系统部分,介绍了如何利用PERL的Email::Sender和其他相关模块...

    安装Bugzilla所需Perl模块

    7. Net::SMTP::SSL:如果你的SMTP服务器需要SSL连接,这个模块是必要的。 8. Email::Sender和Email::Simple:用于发送电子邮件。 9. Time::HiRes:提供高精度的时间函数,对性能敏感的代码有帮助。 10. Text::CSV...

    使用Perl实现系统管理自动化(第二版)

    这些模块支持多种传输协议,如SMTP、IMAP等。 - **垃圾邮件过滤**: Perl还支持开发复杂的垃圾邮件过滤机制,可以通过文本分析、关键字匹配等方式自动识别并过滤掉不需要的邮件。 #### 七、高效地创建、处理和分析...

    Perl发送邮件脚本

    一个perl发送邮件的脚本: 功能: mailto.pl -s Subject -t To -f file-... -s 指定主题 -t 指定接收人,多人以,分隔 -f 邮件内容,发之前放在文件中 ... 注: 1、使用Net::SMTP发送邮件 2、本工具不支持发送附件!

    Net_SMTP-1.8.0.tgz

    Net_SMTP库是Perl编程语言中的一个模块,主要用于实现SMTP(简单邮件传输协议)客户端功能。这个库使得Perl程序员能够方便地发送电子邮件,是构建邮件系统或者自动化邮件发送任务的关键组件。版本1.8.0代表了这个库...

    perl-MIME-Lite-3.30.0-6.mga6.noarch.rpm

    my $msg=MIME::Lite->new( From=>$opt->{from}, To=>$opt->{to}, #Subject=>$opt->{subject}, Subject=>"=?UTF-8?B?" .encode_base64(encode("utf8", $opt->{...#$msg->send('smtp','wwww.maildir.cn',Debug=>0);

    Network_Programming_With_Perl

    对于邮件处理,Perl的`Net::SMTP`模块允许创建SMTP客户端,发送电子邮件。这包括设置发件人、收件人,添加附件,以及处理认证和加密。 七、网络安全 Perl在网络编程中也考虑到了安全问题。`Crypt::SSLeay`和`IO::...

    perl-Net-SMTP-SSL

    安装完成后,就可以在Perl程序中通过`use Net::SMTP::SSL;`引入模块,并利用其提供的方法来发送加密邮件。 总的来说,Perl-Net-SMTP-SSL是Perl开发者在处理安全邮件发送需求时的一个强大工具,它简化了与SSL/TLS ...

Global site tag (gtag.js) - Google Analytics