6

PHPMailer を使用して多くの添付ファイルを含むフォームから情報を送信する場合、ファイルの合計が 7 MB を超えない限り、すべて問題なく送信されます。

ご覧のとおり、サーバー上のすべてが正しく設定されています。

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

PHPメールサーバーの制限について読んだことがあります。PHP mail() 関数を使用してメッセージを送信するように PHPMailer を設定しました。

セットアップには他に何が必要ですか?どこに問題がありますか?コード自体には制限がないため、別の場所に配置する必要があります。

メールが送信されない場合、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 に答える