#!/usr/bin/perl -w
package Mailiter;
use vars qw(@ISA @EXPORT @EXPORT_OK);
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
smtpserver from to cc subject mailbody
attach unattach unattachall
send
);
use MIME::Lite;
use Common;
sub new
{
my $self = shift;
my ($subject, $tolist, @messages) = @_;
$self->{'subject'} = $subject;
$self->to($tolist);
$self->{'mailbody'} = {'Type' => 'text/plain', 'Data' => qq(join('\n',@messages))};
bless $self;
}
sub smtpserver
{
my $self = shift;
my ($smtpserver) = @_;
$self->{'mailserver'} = $smtpserver;
}
sub from
{
my ($self, $mailfrom) = @_;
$self->{'from'} = $mailfrom;
}
sub to
{
my ($self, $tolist) = @_;
$self->{'tolist'} = join(',', split(/[:,;|\s]+/, $tolist));
}
sub cc
{
my ($self, $cclist) = @_;
$self->{'cclist'} = join(',', split(/[:,;|\s]+/, $cclist));
}
sub subject
{
my ($self, $subject) = @_;
$self->{'subject'} = $subject;
}
sub mailbody
{
my ($self, $type, $mailbody) = @_;
$self->{'mailbody'} = {'Type' => $type, 'Data' => $mailbody};
}
sub attach
{
my ($self, $type, $path, $name) = @_;
$self->{'attachcs'} = () if not $self->{'attachcs'};
push(@{$self->{'attachcs'}},
{ 'Type' => $type, 'Path' => $path, 'Filename' => $name, 'Disposition' => 'attachment'}
);
}
sub unattach
{
my ($self, $type, $path, $name) = @_;
$self->{'attachcs'} = () if not $self->{'attachcs'};
my @attached = ();
my @unattached = ();
foreach (@{$self->{'attachcs'}}){
if(($_->{'Type'} eq $type) and ($_->{'Path'} eq $path) and ($_->{'Filename'} eq $name)){
push(@unattached, $_);
}
else{
push(@attached, $_);
}
}
$self->{'attachcs'} = @attached;
return @unattached;
}
sub unattachall
{
my ($self, $type, $path, $name) = @_;
$self->{'attachcs'} = ();
}
sub send
{
my $self = shift;
if(&isScmDebug()){
print("mail server: ".$self->{'mailserver'}."\n");
print("mail from: ".$self->{'from'}."\n");
print("to list: ".$self->{'tolist'}."\n");
print("cc list: ".$self->{'cclist'}."\n");
print("subject: ".$self->{'subject'}."\n");
}
if(&isNotBlank($self->{'mailserver'})){
### Add parts (each "attach" has same arguments as "new"):
my $msg = MIME::Lite->new(
From => $self->{'from'},
To => $self->{'tolist'},
Cc => $self->{'cclist'},
Subject => $self->{'subject'},
Type =>'multipart/mixed'
);
### Add parts (each "attach" has same arguments as "new"):
$msg->attach(
Type => $self->{'mailbody'}->{'Type'},
Data => $self->{'mailbody'}->{'Data'});
foreach (@{$self->{'attachcs'}}){
$msg->attach(
Type => $_->{'Type'},
Path => $_->{'Path'},
Filename => $_->{'Filename'},
Disposition => $_->{'Disposition'}
);
}
### use Net:SMTP to do the sending
$msg->send('smtp', $self->{'mailserver'}, Debug=>0);
}
else{ #send email with an MTA like sendmail, cannot send attach with this option
open(MAIL,'|$SENDMAIL -t') || die "Can't start sendmail.: $!";
print MAIL<<"END_OF_HEADER";
To: @{$self->{'tolist'}}
Cc: @{$self->{'cclist'}}
From: $self->{'from'}
Subject: $subject
END_OF_HEADER
print MAIL "Content-Type: $self->{'mailbody'}->{'Type'}\n";
print MAIL "\n";
print MAIL "$self->{'mailbody'}->{'Data'}\n";
print MAIL "\n";
close(MAIL);
}
}
1;
分享到:
相关推荐
在提供的压缩包文件"Perl_mail"中,可能包含了一个或多个示例脚本,这些脚本演示了如何使用Perl发送邮件。通常,这些脚本会导入必要的邮件模块,定义邮件内容(包括收件人、主题、正文和附件),然后通过SMTP服务器...
首先,我们来看看标题提到的"perl发送邮件"这一功能。 Perl发送邮件主要依赖于`Net::SMTP`模块,这是一个标准的Perl模块,用于通过简单邮件传输协议(SMTP)发送邮件。以下是一个简单的Perl脚本示例,展示了如何...
一个perl发送邮件的脚本: 功能: mailto.pl -s Subject -t To -f file-content -h Format-HTML -s 指定主题 -t 指定接收人,多人以,分隔 -f 邮件内容,发之前放在文件中 -h 以HTML格式发送,缺省以文本方式发送 ...
下面将详细介绍如何使用Perl编写SMTP邮件发送脚本。 首先,你需要一个Perl模块来处理SMTP通信。最常用的模块是`Net::SMTP`,它包含在Perl的标准库中,因此无需额外安装。这个模块提供了与SMTP服务器交互的接口,...
本主题将深入探讨如何在Unix环境下利用Perl编写脚本来实现给多人发送邮件的功能。 首先,我们要理解Perl中的邮件发送机制。在Unix系统中,Perl可以通过内置的`Mail::Sender`模块或者第三方的`Email::Sender`模块来...
Perl是一种强大的脚本编程语言,尤其在处理文本和系统管理任务方面表现卓越。在IT领域,Perl被广泛用于创建各种实用程序,其中之一就是发送电子...通过学习和实践,你可以掌握使用Perl发送邮件的技能,提高工作效率。
perl smtp 发送邮件 自动发送邮件
利用perl脚本发送邮件的时候,有时候需要使用html格式,此脚本就是利用perl发送html邮件的一个例子
perl读取excel内容,并发送html邮件!中文不乱码,直接下载可用,只需要改一下文件路径,这是已经上生产的脚本
在perl中使用本机的sendmail发送邮件的代码如下: #!/usr/bin/perl use strict; my($r_mail) = 'xxxx@163.com'; my($s_mail) = 'root@abc.cn'; my($subject) = '邮件标题'; open(MAIL, '|/usr/lib/sendmail -t'); ...
"sendEmail" 是一个基于Perl编写的轻量级邮件客户端程序,它允许用户通过命令行接口发送电子邮件。这个工具对于开发者来说非常方便,因为它不需要复杂的图形界面,而是通过简单的命令参数就能完成邮件的发送。 ...
配置一下 ip地址 my $ADDR=pack('SnC4x8',$PF_INET,$port,192,168,60,10); 和要发送的邮件地址 就可以发送匿名邮件
下面是一个使用Socket模块发送邮件的Perl子程序示例: ```perl sub smtpmail { my ($recipient, $from, $realname, $subject, $mailbody) = @_; my ($a, $name, $aliases, $proto, $type, $len, $thataddr, $...
- **邮件发送与接收**: 使用Perl可以方便地发送和接收电子邮件,常见的邮件模块包括Email::Sender、Mail::Box等。这些模块支持多种传输协议,如SMTP、IMAP等。 - **垃圾邮件过滤**: Perl还支持开发复杂的垃圾邮件...
在成功安装Ezmlm的Perl接口模块后,我们就可以在Perl脚本中使用它来执行各种操作,如创建新的邮件列表、管理订阅者、发送公告等。例如,创建新邮件列表的代码可能如下: ```perl use Ezmlm; my $ezmlm = Ezmlm->...
在unix自己的目录下自动记录emailaddress。自动发送标题邮件#######
2. **网络编程**:介绍如何使用Perl进行HTTP、FTP等协议的通信,以及邮件发送、套接字编程等。 3. **数据库交互**:讲解如何使用DBI模块进行数据库操作,连接MySQL、Oracle等数据库。 4. **正则表达式进阶**:深入...
邮件发送脚本通常使用编程语言编写,例如Python、Shell或Perl。这里以Python为例,介绍一种常见的实现方式: 1. 引入库:Python的`smtplib`库用于处理SMTP(简单邮件传输协议),`email`库用于构建邮件内容。 2. ...
`commit-email.pl` 是一个Perl脚本,通常作为SVN服务器的post-commit钩子,当用户提交代码到SVN仓库后,该脚本会被触发,然后自动发送一封包含提交详情的邮件给指定的收件人。这不仅提高了团队协作效率,也确保了...