6

我只是想问一下,当我使用 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 时,它只发送一些大小 < 7 MB 的文件。

4

3 回答 3

2

我对大型附件(例如 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");

发送大文件没有问题

于 2013-06-14T18:31:39.123 回答
1

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

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

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

您将不得不联系您的托管服务提供商来更改它。

于 2016-01-25T10:45:50.897 回答
0

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

于 2020-06-07T01:12:58.140 回答