免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5354 | 回复: 7
打印 上一主题 下一主题

Mail::Sender问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-13 10:44 |只看该作者 |倒序浏览
之前一直在别人搭好的机器上直接用Mail::Sender,可以正常收发邮件。
换公司后自己在公司搭了个linux环境,安装Mail::Sender后一直收不到邮件,代码和日志如下,看日志个人感觉应该是发送到了邮件服务器。
哪位大神帮忙看看?
是否需要系统级的相关设置或者邮件服务器的设置?不甚感激!

#!/usr/bin/perl
use Mail::Sender;

my($smtp,$from,$to,$cc,$subject,@body);
$smtp = 'xxx.xxx.xxx';
$from = 'xxx@xxx';
$to = 'xxx@xxx';
$subject = "test";

&send_mail($smtp,$from,$to,$cc,$subject,@body);

sub send_mail {
        my($smtp,$from,$to,$cc,$subject,@body)=@_;

        my $sender = new Mail::Sender {
                smtp => $smtp,
                from => $from,
                to => $to,
                cc => $cc,
                debug => "/tmp/perl_mail.log",
                debug_level => '4',
                on_errors => 'code',
        };
        $sender->Open({
                subject => $subject,
                #ctype => "text/html",
                ctype => "text/html",
                encoding => "GB2312"
        }) or die $Mail::Sender::Error,"\n";
        for (@body) { $sender->SendEnc($_) };
        print "Send OK!\n";
        $sender->Close();
}


>> 220 xxxxxxx Microsoft ESMTP MAIL Service, Version: 6.0.3790.4675 ready at  Fri, 13 Jun 2014 09:57:28 +0800
<< EHLO xxxxxx
>> 250-xxxxxx Hello [xxxxxxx]
>> 250-TURN
>> 250-SIZE 20971520
>> 250-ETRN
>> 250-PIPELINING
>> 250-DSN
>> 250-ENHANCEDSTATUSCODES
>> 250-8bitmime
>> 250-BINARYMIME
>> 250-CHUNKING
>> 250-VRFY
>> 250-X-EXPS GSSAPI NTLM LOGIN
>> 250-X-EXPS=LOGIN
>> 250-AUTH GSSAPI NTLM LOGIN
>> 250-AUTH=LOGIN
>> 250-X-LINK2STATE
>> 250-XEXCH50
>> 250 OK
<< MAIL FROM:<xxx@xxx.cn>
>> 250 2.1.0 xxx@xxx.cn....Sender OK
<< RCPT TO:<xxx@xxx.cn>
>> 250 2.1.5 xxx@xxx.cn
<< DATA
>> 354 Start mail input; end with <CRLF>.<CRLF>
<< quit

论坛徽章:
0
2 [报告]
发表于 2014-06-13 17:45 |只看该作者
新系统没人遇到过么?

回复 1# xfilesliuli


   

论坛徽章:
0
3 [报告]
发表于 2014-06-16 09:03 |只看该作者
搞了一天没找到原因。

看日志Mail FROM  250 Sender OK
      RCPT TO  后面只有 250,没有看到 Recipient OK

这个是否表示发到邮件服务器OK,但是邮件服务器没有接收? 不过百度250代码貌似又是正常的。

默默祈祷大神出现!玛尼玛尼哄!


回复 2# xfilesliuli


   

论坛徽章:
0
4 [报告]
发表于 2014-06-16 18:22 |只看该作者
又到windows下试了下,同样的日志,也收不到邮件

难道是邮件服务器要设置什么?求大神指点!!!!!


回复 3# xfilesliuli


   

论坛徽章:
0
5 [报告]
发表于 2014-06-18 17:06 |只看该作者
要哭了,放弃了之前一直发送失败的邮件服务器,换了个邮件服务器测试。
结果代码中注释掉encoding=>'gb2312'就能发送,不注释掉encoding就发送失败!

好不容易换个邮件服务器能发,但不让编码,不能发中文,蛋疼了。

哪位大神出来拯救一下??

回复 4# xfilesliuli


   

论坛徽章:
0
6 [报告]
发表于 2014-06-18 17:23 |只看该作者
换成encoding=>"Base64" 可以显示发送并显示中文了。

哪位大神出现搭救我一把,帮忙分析下可能的原因吧。
(1)使用邮件服务器A,使用Mail::Sender和telnet去模拟测试发送邮件的过程,日志都是一切正常。用telnet测试时加notify参数会收到系统发的发送成功的邮件,但实际上outlook里面根本收不到邮件,垃圾邮件里面也没有。 让邮件服务器管理员帮忙查询后台日志,看到有日志。

(2)使用邮件服务器B,使用Mail::Sender发送,不能encoding=>'GB2312',使用Base64正常发送,这个还好理解一点,可能是服务器不认GB2312的编码,当垃圾邮件之类的给过滤掉了。

第一点很难理解,什么信息都没有。

回复 5# xfilesliuli


   

论坛徽章:
1
狮子座
日期:2014-02-25 09:46:33
7 [报告]
发表于 2014-06-20 10:23 |只看该作者
你换一个sendEmail-v1.56试试,这是一个单独的perl程序,大牛写的,下载下来解压就能直接用,或者用 use Net::SMTP;   use Encode;  这两个包也能发送邮件也能编码

论坛徽章:
0
8 [报告]
发表于 2014-06-20 15:47 |只看该作者
偶然发现是被服务器当垃圾邮件全给过滤了,登录网页版outlook,所有测试邮件全部在垃圾邮件里面。
哎,换到事业单位太多悲剧,东西全部是厂商默认设置,没有一个技术专家,各种正常邮件莫名其妙到了垃圾邮件里面。

问邮件管理员答复竟然是不符合微软的过滤策略。竟然木有自己的策略去过滤,惨淡。

如果有人碰到发件outlook客户端收不到邮件,日志又一切正常,请第一时间查看网页版的outlook垃圾邮件,看是否在里面。

客户端要正常收到邮件,需要在outlook客户端更改垃圾邮件过滤级别 为"不自动筛选"或者加到安全收件人里面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP