免费注册 查看新帖 |

Chinaunix

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

Perl可以用来发送邮件吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-04 17:13 |只看该作者 |倒序浏览
我只是想做个简单的实验,所以申了一个Gmail帐号,开启了相关的选项后,用Windows Live Mail客户端测试可以发送,然后我就开始尝试用Perl写一个程序用来发送邮件,但是总也成功不了,尤其是Mail::Sender,它除了把我的Terminal挂起无限长时间之外什么也不做。

请会的人帮个忙看一下我的代码是不是有问题,下面是涉及的参数:
SMTP加密:SSL
SMTP认证:Clear-type-text,需要账户和密码
SMTP端口:465

就是这么简单的几个参数,用Mail::Sender不行,它似乎不支持SSL,至少我在其cpan文档上连SSL这仨字母都找不到,用Net::SMTP也不行,它简陋的文档里不仅没有SSL,连Port都找不到。后来我找到了一个说是语法和Net::SMTP一样,但是是使用SSL的模块叫Net::SMTP::SSL,于是用它试了试,也不行,因为认证参数“Clear-type-text”对应的在该模块中的指定方式和该模块对此参数的称呼我找不到,我想这应该是主要问题,有谁知道如何指定吗?

下面是我写的程序:
  1. #!/usr/bin/perl
  2. use MIME::Parser;
  3. use Net::SMTP::SSL;
  4. @data = ("Useless line 1", "Useless line 2");
  5. my $top = build MIME::Entity (
  6.     'X-Mailer' => 'test_sender',
  7.     -From => 'sender@gmail.com',
  8.     -To => 'account@msn.com',
  9.     -Subject => 'I can never see this crap',
  10.     Data => \@data);
  11. my $smtp = Net::SMTP::SSL->new('mail.google.com',Port => 465);
  12. $smtp->mail('sender@gmail.com');
  13. $smtp->to('account@msn.com');
  14. $smtp->auth('sender@gmail.com','MyPassword');
  15. $smtp->data;
  16. $smtp->datasend($top->stringify);
  17. $smtp->dataend;
  18. $smtp->quit;
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-07-04 18:12 |只看该作者
执行到第11行的语句就会无休止的被挂起,这行语句无法被正确的执行,挂起N久之后,会执行第12行,然后因为$smtp没有得到正确的值而导致程序退出。我把模块换成Net::SMTP也不行,一样的下场,用Mail::Sender也是一样的下场。

论坛徽章:
0
3 [报告]
发表于 2010-07-06 10:04 |只看该作者
看看是不是你们的服务器端口是不是被封了

论坛徽章:
0
4 [报告]
发表于 2010-07-15 13:49 |只看该作者
你机器配置DNS了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP