设为首页收藏本站

就爱编程论坛

 找回密码
 注册

人人连接登陆

无需注册,直接登录

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 558|回复: 0
打印 上一主题 下一主题

perl发送邮件真正可用版本 [复制链接]

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    2025-5-27 03:37:20
  • 签到天数: 366 天

    [LV.9]以坛为家II

    论坛先锋 学习至圣 荣誉成员 论坛元老 活跃之星 终极领袖

    我玩的应用:

    跳转到指定楼层
    楼主
    发表于 2012-2-4 05:43:45 |只看该作者 |倒序浏览
    [root@ZB sf]# cat mailw.pl
    #!/usr/bin/perl -w
    use Net::SMTP;
    use MIME::Base64;
     
    ################
    # 自动发告警邮件
    #sword make
    #bijing make
    ################
     
    $host = '123.125.50.135'; #SMTP服务器地址
     
    ###########################
    #
    # $host: smtp服务器
    # $auth: 邮件账户
    # $password: 邮件账户密码
    # $to: 要发送的目标
    # $mail_body: 邮件内容
    #
    ###########################
     
    sub send_mail {
      my($host, $auth, $password, $to, $mail_body) = @_;
      my $smtp = Net::SMTP->new(
        Host    =>  $host,
        Timeout =>  30,
      );
    $smtp->command('AUTH LOGIN')->response();
    my $userpass = encode_base64($auth);
    $userpass =~ s/\n//g;
    $smtp->command($userpass)->response();    
    $userpass = encode_base64($password);
    $userpass =~ s/\n//g;
    $smtp->command($userpass)->response();
      $smtp->mail($auth);
      $smtp->to($to);
      $smtp->bcc($auth);
      $smtp->data();
      $smtp->datasend("Content-Type:text/plain;charset=GB2312\n");
      $smtp->datasend("Content-Transfer-Encoding:base64\n");
      $smtp->datasend("From:$auth \n");
      $smtp->datasend("To:$to \n");
      $smtp->datasend("Subject:=?gb2312?B?".encode_base64($mail_body,'')."?=\n\n");
      $smtp->datasend("\n");
     
      $smtp->datasend(encode_base64($mail_body,'')." \n");
      $smtp->dataend();
      $smtp->quit;
    }
     
    #获取命令行参数
    if(@ARGV < 1) {
      $cf_file = './mail.cf'; #默认配置文件
    }
    else {
      $cf_file = $ARGV[0]; #获取配置文件名
    }
     
    #打开配置文件和日志文件
    open CF_FILE, $cf_file or die "Open config file [$cf_file] failed! \n";
    open LOG_FILE, '>>send.log' or die "Open send.log failed! $!\n";
    while(<CF_FILE>) {
      chomp;
      if($_ =~ /^#+/) {
        next; #跳过注释行
      }
     
    @line = split /\s+/, $_;
    if(@line != 4) {
      next; #跳过空行
    }
     
    #发送邮件
    send_mail($host, $line[0], $line[1], $line[2], $line[3]);
    print LOG_FILE "[" . localtime() . "] send_mail($host, $line[0], $line[2], $line[3]); \n";
    }
     
    close CF_FILE;
    close LOG_FILE;
     

    [root@ZBsf]# cat mailw.cf
    #<auth> <password> <To> <mail subject> <mail body>
    t1@163.com 1234 t2@163.com XX重启完毕
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享分享0 收藏收藏0 支持支持0 反对反对0 分享到人人 转发到微博
    [img=http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=fRUcHhYWGAQ9GxIFEBwUEVMeEhA]http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_02.png[/img]

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    晴云孤魂's Blog|就爱编程搜帖|手机版|Archiver|就爱编程论坛     

    GMT+8, 2025-7-2 06:01 , Processed in 0.090280 second(s), 26 queries .

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    回顶部