【问题标题】:PHP mail() email size limitPHP mail() 邮件大小限制
【发布时间】:2013-06-10 19:14:57
【问题描述】:

我只是想问一下,当我使用 PHPMailer 从带有许多附件的表单中发送信息时,它发送一切正常,除非文件总大小超过 7 MB。

如您所见,服务器上的所有内容都已正确设置:

memory_limit = 40M
post_max_size = 40M
upload_max_filesize = 40M
file_uploads = On

我已经阅读了一些关于 PHP 邮件服务器限制的内容。我已将 PHPMailer 设置为使用 PHP mail() 函数发送消息。

还有什么需要设置的?问题可能出在哪里?代码本身确实没有任何限制,所以它必须在其他地方。

邮件未发送时,PHP似乎没有报任何错误,我只是从

if(!$mail->Send()) { } else

我已经读到在某些电子邮件服务器上存在 7 MB 的限制,这是否会受到主机的某种限制?谢谢你的帮助,我越来越绝望了。

我也在我们的测试VPS服务器上试过,它每次都发送邮件,当文件总大小超过7 MB时,它只发送大小

【问题讨论】:

  • 你找到解决办法了吗?
  • 不幸的是我没有找到任何东西。不过,这并不重要,因为它只适用于图像。
  • 嗯,对我来说这是一件大事,我必须创建所选订单的 PDF,并将它们附加到电子邮件中。用户可以选择支持文件以及订单。平均每个电子邮件超过 10MB。我仍在寻找解决方案的任何方法
  • 请通知您的托管服务提供商。电子邮件是通过他们的邮件服务器发送的,并且可以肯定的是,他们可以更改(或告诉您如何)更改要发送的电子邮件的附件大小限制。

标签: limit phpmailer email-attachments


【解决方案1】:

我对大型附件(例如 pdf)所做的是自己对文件进行基本编码:

$file = "/home/path/to/file.pdf";
$fp = @fopen($file, "rb");
$pdf_data = @fread($fp, filesize($file));
@fclose($fp);
$pdf_data = chunk_split(base64_encode($pdf_data));
$mail->AddStringAttachment($pdf_data, "filename.pdf", "base64", "application/pdf");

发送大文件没有问题

【讨论】:

  • 如果您自己不对文件进行编码,是否会在发送文件时遇到问题?我一般如何为图像编辑这个,而不仅仅是一种格式?
【解决方案2】:

我已经读到在某些电子邮件服务器上有 7 MB 的限制,可以 这会受到主机的限制吗?

这很可能是您的问题。 PHPMailer 使用 Web 服务器的 sendmail 功能或安装的任何邮件服务器。通常,消息大小有一个(默认)限制。对于 Postfix,这将是:

message_size_limit(默认值:10240000)
消息的最大字节大小,包括信封信息。
http://www.postfix.org/postconf.5.html

您必须联系您的托管服务提供商来更改它。

【讨论】:

    【解决方案3】:

    我在研究自己遇到的一个问题时发现了这篇文章,刚刚发现 Gmail 的字符数限制为 10'000,所以如果您使用可能是您的问题的 Gmail 地址进行测试...我现在使用$mail->MsgHTML(substr($body,0,9000).' [...]'); 来确保我保持在Gmail 限制以下...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多