发邮件时候遇到的一个问题

原创 2007年09月24日 15:27:00
 发邮件的程序比较简单,在网上一搜一堆。我用的是自己架的postfix,基本都是默认配置,只改了发送权限的机器跟一些发送重试机制的参数。
但是在真正发邮件的时候,却遇到了一个令我比较郁闷的问题。找了几天也没有找到答案。我用的是Net::Smtp模块发送的,起初我怀疑是没有用好。之后又怀疑一次的tcp连接太多等等,总之,问题没有解决。
无奈之下,我到postfix官网上找到了Kyle Dent的联系方式。 (之前熟悉postfix也是看他写得那本书)

我去信请教的大概内容:
Hi kdent,
  I get some puzzled problem when i use PostFix.
 
  My program snatched some email list( About 30,000). Then i use my Postfix to send email.
  You know,to reduce connection times,I ONLY set up ONEC time connection to Postfix.
  That is to say,I did it as following step:
 
  <mockcode>
  1) connect the PostFix.
  2) call the mail function in loop.
  3) quit the connect.
  </mockcode>
   
  After ran the program(The program spent 20s or so),i check the postfix log (/var/log/maillog/) ,Only about 1,000 lists have been sent.
  Remainder lists didn't been recorded any info.
 
  Do I need some special config for this aim?
 
  BTW,My postconf is :
。。。


两天之后,kyle给我了答复:
You should take a look at the smtpd limit configuration parameters. They
are all named starting with smtpd and end in limit (smtpd_*_limit). No
doubt you're running into one of those. Also Postfix will report to your
client the reason for not accepting a message. Be sure to check the
response from Postfix to see if a message was accepted or not. If not
then check the error message for the reason.


按图索骥,我又找了一下postfix的配置 ,最终将问题定位在 smptd_recipient_limit 这个参数上。其默认值是1000。

我的代码:
sug smail {
###(1)$smtp = Net::SMTP->new('xx.xx.xx.xx');
$smtp->mail('test@g.com');
$smtp->to('test@g.com');
$smtp->data();
$smtp->datasend('From: test@g.com');
$smtp->datasend("/n");
$smtp->datasend('To: test@g.com');
$smtp->datasend("/n");
$smtp->datasend('Content-type:text/html;Charset=gb2312');
$smtp->datasend("/n");
$smtp->datasend("Subject: test!");
$smtp->datasend("/n/n");
$smtp->datasend("<b>how are you!</b>/n");
$smtp->dataend();
$smtp->dataend();
###(2) $smtp->quit;
}
如此一来,只要将smptd_recipient_limit 调大,把注释1,2放到发送邮件的外部,就可以只建立一次NET socket,然后不停的发送邮件了。

当然去掉注释1,2其逻辑就是每发一封邮件,就new一个Net::SMTP。两种方案,根据实际情况选吧。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android App异常报错捕获后使用javamail登录QQ邮箱发邮件的功能遇到的问题

网上参照了: 1.gundumw100的博客 http://gundumw100.iteye.com/blog/1182104 来实现了异常捕获,使用的是服务器来接收错误文件的 2.然后又参照了 简书...

web版收发邮件问题

  • 2013-04-23 14:08
  • 375KB
  • 下载

Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件

1,Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进Windows事件日志。计算机启动时,服务会自动...

TD发邮件乱码问题

  • 2007-11-06 16:52
  • 778B
  • 下载

td自动发邮件问题解决

  • 2007-11-06 16:44
  • 280KB
  • 下载

phpmailer发邮件常见的一些问题总结及使用案例

PHPMailer邮件类使用错误分析 一,没有定义发送邮箱$mail->From或格式不正确,错误提示:Language string failed to load: recipients_fail...

phpmailer发邮件常见的一些问题总结

这几天做mail群发,碰到不少问题。一些常见的错误网上很多但没有答案,靠自己不断的尝试终于OK了~这里把几个常见的问题列出来做为工作笔记! 前提条件 请确定当前环境如果是局域网内的服务器的话,dns...

解决Python不能发邮件问题

今天一下午就在搞它了。 先附上源代码: #coding:utf-8 import smtplib from email.mime.text import MIMEText from email.hea...

javamail,java发email,发邮件,jaf,activation,j2ee5冲突问题解决

首先要引mail.jar和activation.jar包 下载地址为: javamail:http://java.sun.com/products/javamail/downloads/index.h...

在美国godaddy虚拟主机上用php发邮件应该注意的问题

这几天一直在写一个php发送邮件的功能,在本机测试的时候一直很正常,但是放在服务器上测试的时候,就总提示Error: Could not connect to SMTP host. 首先说一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)