我只是想问,当我使用PHPMailer从包含许多附件的表单发送信息时,除非文件总共超过7 MB,否则它会发送一切正常。
服务器上的Everyhing设置正确,如您所见:
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。
答案 0 :(得分: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");
发送大文件没有问题
答案 1 :(得分:1)
我已经读过,在某些电子邮件服务器上有7 MB的限制,可以 这会受到托管的限制吗?
很可能这是你的问题。 PHPMailer使用Web服务器的sendmail函数或安装的任何邮件服务器。通常,邮件大小有(默认)限制。对于Postfix,这将是:
message_size_limit(默认值:10240000)
消息的最大大小(以字节为单位),包括信封信息
http://www.postfix.org/postconf.5.html
您必须与托管服务提供商联系以进行更改。
答案 2 :(得分:0)
我在研究自己遇到的一个问题时发现了这篇文章,并且刚刚发现Gmail的字符数限制为10,000,所以如果您使用可能是您问题的Gmail地址进行测试...我现在使用$mail->MsgHTML(substr($body,0,9000).' [...]');
来确保我保持在Gmail限制以下...