`

用Perl发送邮件

阅读更多
#!/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自动发邮件

    在提供的压缩包文件"Perl_mail"中,可能包含了一个或多个示例脚本,这些脚本演示了如何使用Perl发送邮件。通常,这些脚本会导入必要的邮件模块,定义邮件内容(包括收件人、主题、正文和附件),然后通过SMTP服务器...

    perl发送邮件

    首先,我们来看看标题提到的"perl发送邮件"这一功能。 Perl发送邮件主要依赖于`Net::SMTP`模块,这是一个标准的Perl模块,用于通过简单邮件传输协议(SMTP)发送邮件。以下是一个简单的Perl脚本示例,展示了如何...

    Perl发送邮件脚本

    一个perl发送邮件的脚本: 功能: mailto.pl -s Subject -t To -f file-content -h Format-HTML -s 指定主题 -t 指定接收人,多人以,分隔 -f 邮件内容,发之前放在文件中 -h 以HTML格式发送,缺省以文本方式发送 ...

    perl 写的发邮件smtp

    下面将详细介绍如何使用Perl编写SMTP邮件发送脚本。 首先,你需要一个Perl模块来处理SMTP通信。最常用的模块是`Net::SMTP`,它包含在Perl的标准库中,因此无需额外安装。这个模块提供了与SMTP服务器交互的接口,...

    利用perl给多人发送邮件

    本主题将深入探讨如何在Unix环境下利用Perl编写脚本来实现给多人发送邮件的功能。 首先,我们要理解Perl中的邮件发送机制。在Unix系统中,Perl可以通过内置的`Mail::Sender`模块或者第三方的`Email::Sender`模块来...

    Perl的Email 发送程序与插件

    Perl是一种强大的脚本编程语言,尤其在处理文本和系统管理任务方面表现卓越。在IT领域,Perl被广泛用于创建各种实用程序,其中之一就是发送电子...通过学习和实践,你可以掌握使用Perl发送邮件的技能,提高工作效率。

    perl smtp发送邮件

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

    perl发送html邮件

    利用perl脚本发送邮件的时候,有时候需要使用html格式,此脚本就是利用perl发送html邮件的一个例子

    perl读取excel内容,并发送html邮件!中文不乱码

    perl读取excel内容,并发送html邮件!中文不乱码,直接下载可用,只需要改一下文件路径,这是已经上生产的脚本

    perl-Mail-Sendmail

    在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写的邮件客户端

    "sendEmail" 是一个基于Perl编写的轻量级邮件客户端程序,它允许用户通过命令行接口发送电子邮件。这个工具对于开发者来说非常方便,因为它不需要复杂的图形界面,而是通过简单的命令参数就能完成邮件的发送。 ...

    局域网发送匿名邮件的perl脚本

    配置一下 ip地址 my $ADDR=pack('SnC4x8',$PF_INET,$port,192,168,60,10); 和要发送的邮件地址 就可以发送匿名邮件

    使用Perl编写CGI时需要注意的几个问题

    下面是一个使用Socket模块发送邮件的Perl子程序示例: ```perl sub smtpmail { my ($recipient, $from, $realname, $subject, $mailbody) = @_; my ($a, $name, $aliases, $proto, $type, $len, $thataddr, $...

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

    - **邮件发送与接收**: 使用Perl可以方便地发送和接收电子邮件,常见的邮件模块包括Email::Sender、Mail::Box等。这些模块支持多种传输协议,如SMTP、IMAP等。 - **垃圾邮件过滤**: Perl还支持开发复杂的垃圾邮件...

    Ezmlm邮件列表管理程序的Perl接口模块

    在成功安装Ezmlm的Perl接口模块后,我们就可以在Perl脚本中使用它来执行各种操作,如创建新的邮件列表、管理订阅者、发送公告等。例如,创建新邮件列表的代码可能如下: ```perl use Ezmlm; my $ezmlm = Ezmlm-&gt;...

    perl 邮件处理send_mail

    在unix自己的目录下自动记录emailaddress。自动发送标题邮件#######

    神奇的perl两本perl入门教材合集

    2. **网络编程**:介绍如何使用Perl进行HTTP、FTP等协议的通信,以及邮件发送、套接字编程等。 3. **数据库交互**:讲解如何使用DBI模块进行数据库操作,连接MySQL、Oracle等数据库。 4. **正则表达式进阶**:深入...

    告警监控发送邮件脚本

    邮件发送脚本通常使用编程语言编写,例如Python、Shell或Perl。这里以Python为例,介绍一种常见的实现方式: 1. 引入库:Python的`smtplib`库用于处理SMTP(简单邮件传输协议),`email`库用于构建邮件内容。 2. ...

    svn提交文件自动邮件提醒

    `commit-email.pl` 是一个Perl脚本,通常作为SVN服务器的post-commit钩子,当用户提交代码到SVN仓库后,该脚本会被触发,然后自动发送一封包含提交详情的邮件给指定的收件人。这不仅提高了团队协作效率,也确保了...

Global site tag (gtag.js) - Google Analytics