100分悬赏 —— 国外服务器群发邮件,如何100%发送成功,采用PHPmailer

pandaidea 2009-12-31 11:31:09
服务器:美国(因为主要针对客户源为北美),虚拟主机。
本人:中国桂林
程序:smarty+PHP5+MYSQL5+Apache


在前台订阅本站邮件,在后台实现群发,利用PHPmailer。
但由于服务器在国外,首先要采取代理(SOCKET)的姿态登陆,进行程序群发。否则会被国外服务器自动过略为垃圾邮件。
容易产生超时的问题(上传2M东西到服务器,需要半小时-1小时)。

失败是肯定的,但如何优化和将失败降低至最少。。。尤其是在当订阅客户超过500至1000时。

希望大家提出宝贵意见。


100分悬赏=,=
...全文
907 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
pandaidea 2010-01-04
  • 打赏
  • 举报
回复
我已经采用JS自动刷新形式,每次分组发送。
但就算一组才10封邮件,也会话费几分钟。

我希望有办法优化它。

只要不是来自软件、VPS方面、其他邮箱网站,都可以。
pandaidea 2010-01-04
  • 打赏
  • 举报
回复
foreach (){.... $mail->AddAddress($v['email']); .....}$mail->Send();

我很清楚这个的速度会快很多。
但我不需要它。

想象一下,我司网站的忠实客户收到一个有500多个邮件地址的一封邮件他会做何感想?
pandaidea 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 foolbirdflyfirst 的回复:]
引用 20 楼 pandaidea 的回复:
引用 18 楼 foolbirdflyfirst 的回复:
网速的问题,你用php能解决什么东西呢?


CGI可以因为一个submit,同时发送邮件给2个不同的邮箱吗?

不是cgi模式也可以,就是呼叫smtp服务器,写入协议串,发送.
这个还是要分清楚,哪些是php这边控制的,哪些是smtp服务器解析的.
比如你上面那个foreach (){....      $mail->AddAddress($v['email']);    .....}$mail->Send(); 这样的东西,实际上是由smtp服务器解析你发送的协议to地址串,如果有多个,服务器那边就转发到不同邮箱.虽然是一次性写入协议给smtp服务器,速度会快很多很多.但是控制不了你所谓的用户体验,这个体验什么的是smtp服务器那边的+邮件客户端软件的事了.
[/Quote]
我一直用的都是SMTP机制。
至于CGI发送邮件,它可以实现无等待直接跳转到submit后的page。
然后由服务器自动排序、发送任务邮件。

还有就是网站会有群发功能,不能用GMAIL。

如果同一个时段内,发送数量超过上限,GMAIL就会被封停一段时间,久而久之就直接封了。

foolbirdflyfirst 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 pandaidea 的回复:]
引用 18 楼 foolbirdflyfirst 的回复:
网速的问题,你用php能解决什么东西呢?


CGI可以因为一个submit,同时发送邮件给2个不同的邮箱吗?
[/Quote]
不是cgi模式也可以,就是呼叫smtp服务器,写入协议串,发送.
这个还是要分清楚,哪些是php这边控制的,哪些是smtp服务器解析的.
比如你上面那个foreach (){.... $mail->AddAddress($v['email']); .....}$mail->Send(); 这样的东西,实际上是由smtp服务器解析你发送的协议to地址串,如果有多个,服务器那边就转发到不同邮箱.虽然是一次性写入协议给smtp服务器,速度会快很多很多.但是控制不了你所谓的用户体验,这个体验什么的是smtp服务器那边的+邮件客户端软件的事了.
pandaidea 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 foolbirdflyfirst 的回复:]
网速的问题,你用php能解决什么东西呢?
[/Quote]

CGI可以因为一个submit,同时发送邮件给2个不同的邮箱吗?
pandaidea 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 foolbirdflyfirst 的回复:]
那你这个东西应该放到服务器让他们测试下.
你从中国连到外国,是什么速度,人家从美国直接连接smtp服务器又是什么速度..
[/Quote]

但是我们没有在那个区域的人可以测试。
正因如此,没有人可以证明这一点。所以领导方面不好说服。
所以这也很头疼。
foolbirdflyfirst 2010-01-04
  • 打赏
  • 举报
回复
网速的问题,你用php能解决什么东西呢?
foolbirdflyfirst 2010-01-04
  • 打赏
  • 举报
回复
那你这个东西应该放到服务器让他们测试下.
你从中国连到外国,是什么速度,人家从美国直接连接smtp服务器又是什么速度..
pandaidea 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 foolbirdflyfirst 的回复:]
那你到底用的什么smtp服务器,这么慢的.gmail不行么.
foreach也要记得发完一封,就清空之前的地址和附件
PHP codeforeach(....){....$mail->Send();$mail->ClearAllRecipients();$mail->ClearAttachments();
}
[/Quote]

=,=
客户要你用啥,你就用啥,你有私自修改为GMAIL的可能性么?
呵呵,开个小玩笑。
公司的要求大过天。。嘿嘿~
foolbirdflyfirst 2010-01-04
  • 打赏
  • 举报
回复
那你到底用的什么smtp服务器,这么慢的.gmail不行么.
foreach也要记得发完一封,就清空之前的地址和附件
foreach(....){
..
..
$mail->Send();
$mail->ClearAllRecipients();
$mail->ClearAttachments();
}
pandaidea 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 coolesting 的回复:]
foreach (){....      $mail->AddAddress($v['email']);    .....}$mail->Send();
如果用以上这种代码的话,会造成收件人会看到许多邮件地址,这样体验很糟糕……希望能够一封一封发送。。。

----------------------------

不是把$mail->Send()放在循环里就没事了吗?
[/Quote]

擦汗。。。

你试试先。。。我不说话……
嘿嘿。
苍蝇①号 2009-12-31
  • 打赏
  • 举报
回复
弄个抓包工具,看时间到底耗在哪了。
foolbirdflyfirst 2009-12-31
  • 打赏
  • 举报
回复
弄个抓包工具,看时间到底耗在哪了。
骄傲青蛙 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pandaidea 的回复:]
引用 3 楼 coolesting 的回复:
容易产生超时的问题(上传2M东西到服务器,需要半小时-1小时)。

什么网速?  以前用国外的空间怎么慢也不会去到2M东西要传半个小时, 网速严重有问题


偷偷PM给你一个网址,那个也是我们公司买的一个服务器。

公司的网通2M(6个人用),我在家是电信2M(我一个人用)。。
我在家访问这个站的速度还没公司快=,=

但是上传东西到我广东的服务器却是非常的快。

所以这种网速的概念,不是我们普通人能琢磨的(电信VS网通的制度问题)。

我只希望程序能尽量把这些缺点处理好。呵呵。
[/Quote]

地方的问题, 我在广州这边两个地方分别拉了两条adsl, 一条1M, 一条2M,居然1M的比2M的快,无语
pandaidea 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 coolesting 的回复:]
容易产生超时的问题(上传2M东西到服务器,需要半小时-1小时)。

什么网速?  以前用国外的空间怎么慢也不会去到2M东西要传半个小时, 网速严重有问题
[/Quote]

偷偷PM给你一个网址,那个也是我们公司买的一个服务器。

公司的网通2M(6个人用),我在家是电信2M(我一个人用)。。
我在家访问这个站的速度还没公司快=,=

但是上传东西到我广东的服务器却是非常的快。

所以这种网速的概念,不是我们普通人能琢磨的(电信VS网通的制度问题)。

我只希望程序能尽量把这些缺点处理好。呵呵。
骄傲青蛙 2009-12-31
  • 打赏
  • 举报
回复
容易产生超时的问题(上传2M东西到服务器,需要半小时-1小时)

什么网速? 以前用国外的空间怎么慢也不会去到2M东西要传半个小时, 网速严重有问题
pandaidea 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 default7 的回复:]
帮你UP
[/Quote]给你一分~~
  • 打赏
  • 举报
回复
帮你UP
骄傲青蛙 2009-12-31
  • 打赏
  • 举报
回复
foreach (){.... $mail->AddAddress($v['email']); .....}$mail->Send();
如果用以上这种代码的话,会造成收件人会看到许多邮件地址,这样体验很糟糕……希望能够一封一封发送。。。

----------------------------

不是把$mail->Send()放在循环里就没事了吗?
pandaidea 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yctin 的回复:]
100%成功这个是絶对不可能的, 极多因素会招致错误
想稳定又免费可以经Google Apps这些服务的SMTP传送
1000封的其实很少,问题不大

Google Apps 是什么就自己google 吧

[/Quote]

我觉得问题最大的主要是网速,若不是它。。我都不需要发这个帖勒=,= 木办法。
加载更多回复(4)

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧