在perl中使用 MIME::Lite来发送有附件的邮件

本文涉及的产品
文件存储 NAS,50GB 3个月
简介:

   工作总需要通过linux系统自动发送邮件功能,来实现针对数据库和系统的监控,并定时发送警报到邮箱,所以使用到MIME::Lite 模块,不过个人对该功能理解不是很透彻,也仅仅只是使用,为更完整的写一篇博文,供大家参考,所以在网络上参考别人的blog并整理。

首先,创建包含邮件各种头信息的 MIME::Lite 对象:

 
 
  1. use MIME::Lite; 
  2.   
  3. $msg = MIME::Lite->new( 
  4. From  => 'sender@example.com', 
  5. To   => 'recipient@example.com', 
  6. Subject => 'You want awstats ?', 
  7. Type  => 'multipart/mixed' 
  8. ); 

然后用 attach 方法添加附件内容:

 
 
  1. $msg->attach( 
  2. Type    => 'auto', 
  3. Path    => '/root/awstats.gz', 
  4. ); 

MIME::Lite     模块的参数类型决定附件的类型和附件的添加方法:
Path     指定作为附件的文件的路径
Filename     指定接受方保存附件时,附件的默认文件名。如果指定了 Path 参数,那么默认的文件名就是路径中的名字
Data     指定附件添加的日期
Type     指定待添加附件的文件编码类型
Disposition    它的值只能是 inline 和 attachment。前者指定接受方打开邮件的时候附件内容会跟在邮件正文后显示,而不单独作为一个附加物。后者指定接受方应该指定一个附件的解码方 法,并且保存附件,此时会有提示

 
 
  1. $msg->send( );      # 默认的方法是用sendmail规则发送 
  2. $msg->send('smtp', 'mailserver.example.com', Timeout => 30,Debug = 1);# 指定其它的方法 

使用MIME::Lite来发送邮件有二种方法 sendmail 和 Net::SMTP。
调用 send 方法时,若第一个参数为“smtp”,则用 Net::SMTP 发送邮件。send的其它参数都传给 Net::SMTP。不加任何的话就是系统的sendmail.

Perl mailSend 下载

使用方法

 
 
  1. echo 'aaaaaaaa' |perl mailSend.pl --to kai.fu --subject 'you subject' --attach awstats.gz --attach test.pl 

MIME::Lite 附录:

MIME::Lite 参数采用“参数名=>值”对形式。

MIME::Lite 头

Approved Encrypted Received Sender
Bcc From References Subject
Cc Keywords Reply-To To
Comments Message-ID Resent- X-
Content-* MIME-Version Return-Path
Date Organization

MIME::Lite 参数类型

Data FH ReadNow
Datestamp Filename Top
Disposition Id Type
Encoding Length
Filename Path

常用附件编码类型
TEXT                          代表 text/plain,为 Type 的默认值;
BINARY                        是 application/octet-stream 的缩写;
multipart/mixed               表明邮件有附件;
application/msword            表明附件为微软的 Word 文档;
application/vnd.ms-excel      表明附件为微软的 Excel 文档;
application/pdf               表明附件为 PDF 文档;
image/gif,image/jpeg,image/png      分别指定 GIF,JPEG,PNG 文件;
audio/mpeg                    指定 MP3 格式文件;video/mpeg 指定 MPEG 格式影片;
video/quicktime               指定Quicktime 格式文件。

这里是我实际使用到脚本,供大家参考

 
 
  1. echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>> /mnt/nas/monitor_log/all.log 
  2. echo @@@@@@@@@@@@@@@@@@@@SERVER_NAME@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>> /mnt/nas/monitor_log/all.log 
  3. echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>> /mnt/nas/monitor_log/all.log 
  4. cat /mnt/nas/monitor_log/xxxx.log >> /mnt/nas/monitor_log/all.log 
  5. mydat=`date +%Y%m%d%H%M` 
  6. cp /mnt/nas/monitor_log/all.log  /mnt/nas/monitor_log/all_log_his/all_log_$mydat 
  7.   
  8. #!/usr/bin/perl -w 
  9. use MIME::Lite; 
  10.  
  11. $FROM='xxxx@163.com'
  12. $TO='xxxx@163.com'
  13. $subject='European Database Server monitor'
  14. $message_text=`cat /mnt/nas/monitor_log/all.log`; 
  15. $msg = MIME::Lite->new(From => $FROM,To => $TO,Subject => $subject,Type => 'multipart/mixed'); 
  16. $msg->attach(Encoding =>'quoted-printable',Type =>'text/plain;charset=UTF-8',Data => $message_text); 
  17. $msg->attach(Type =>'text/plain;charset=UTF-8',Filename => 'monitor_log.txt',Path => '/mnt/nas/monitor_log/all.log', Disposition => 'attachment'); 
  18. $msg->send('smtp','172.16.4.25', Debug=>1 ); 

 

 










本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/763429,如需转载请自行联系原作者
相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
目录
相关文章
|
8月前
|
移动开发 Python HTML5
Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
209 0
|
Python
python发送带中文附件名的邮件
写项目练手时遇到的一个有趣事
157 0
|
安全 PHP 数据安全/隐私保护
使用 PHP 在邮件中发送附件
使用 PHP 在邮件中发送附件
178 0
|
Java Spring 容器
SpringBoot整合JavaMail 可以发送单纯的文字邮件 也可发送有html文件或者发送压缩包多文件邮件
SpringBoot整合JavaMail 可以发送单纯的文字邮件 也可发送有html文件或者发送压缩包多文件邮件
239 0
SpringBoot整合JavaMail 可以发送单纯的文字邮件 也可发送有html文件或者发送压缩包多文件邮件
|
PHP
php利用smtp类轻松的发送电子邮件
当你还在纠结php内置的mail()函数不能发送邮件时,那么你现在很幸运,此时的这篇文章可以帮助到你! php利用smtp类来发邮件真是屡试不爽,我用过很久了,基本上没出过问题。本博客后台,当博主回复留言时候,会自动给网友发一封有新回复提示的邮件也是用的本文这个方法实现的。 smtp类发送邮件的方法其实很简单,也很稳定,类是别人已经写好的了,你只需要调用就行了。几行简单的配置就能发邮件,是不是很期待的试一试呢!
337 0
|
Web App开发 测试技术 Python
Python-SMTP发送邮件(HTML、图片、附件)
前言: SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 一、Python发送HTML邮件 # -*- coding: utf-8 -*- # @Time : 2018/6/6 ...
2213 0
|
BI Python 安全
Python 发送带附件的图文格式报表脚本(smtplib)
coding: utf-8 import smtplib from email.mime.multipart import MIMEMultipart #导入MIMEMultipart类 from email.
1191 0
|
BI Python 安全
Python 发送图文格式的服务器性能报表邮件脚本(smtplib)
coding: utf-8 import smtplib from email.mime.multipart import MIMEMultipart #导入MIMEMultipart类 from email.
1361 0