html-phpメーラーの添付ファイル
このスクリプトを使用して特定のスタッフにメールを送信してきましたが、システムが変更されたため、メールで添付ファイルを送信する必要があり、これを実現するために複数のコードを試しましたが、失敗しました... Iまだメールを受信しますが、添付ファイルがないため、この場合はまったく意味がありません。使用しているスクリプトを次のように配置しました。
使用していた実際のアドレスとSMTPサーバーを削除しました
require("PHPMailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "SMTP.SErver.com";
$mail->From = "[email protected]";
$mail->FromName = "HCSC";
$mail->AddAddress("[email protected]", "Example");
$mail->AddReplyTo("[email protected]", "Hcsc");
$mail->WordWrap = 50;
$mail->IsHTML(false);
$mail->Subject = "AuthSMTP Test";
$mail->Body = "AuthSMTP Test Message!";
$mail->AddAttachment("matt.txt"); //this is basicly what i am trying to attach as a test but will be using excel spreadsheets in the production
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
ファイルを添付する他のいくつかのemtodも試しましたが、どれも機能していないようです。
答え :
解決策:
コードはかなり単純で、構文的に正しいように見えます。スクリプトはエラーメッセージを返しますか?
問題なくメッセージを受信している場合、問題はコードにあるようには見えません。
確認すべき点:
- ファイル「matt.txt」がWebサーバーで読み取り可能であり、パスが正しいことを確認してください。ファイルへのパスは、 $ mail-> AddAttachment()メソッド呼び出しに含める必要があり、スクリプトの場所からの相対パスである必要があります。
- 制限のためにメールサーバーが添付ファイルを削除していないことを確認するか、別の添付ファイルタイプを送信してみてください(.zipまたは.jpgファイルを試してください)
新しいバージョンのphpMailerを実行している場合は、スローされた例外(おそらく、メッセージの送信を妨げていないが、添付ファイルが含まれないようにしているもの)をキャッチしてみることができます。次の構文:( phpMailerサンプルコードから取得)
require 'PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer(true); try { $mail->IsSMTP(); // set mailer to use SMTP $mail->Host = "SMTP.SErver.com"; $mail->From = "[email protected]"; $mail->FromName = "HCSC"; $mail->AddAddress("[email protected]", "Example"); $mail->AddReplyTo("[email protected]", "Hcsc"); $mail->WordWrap = 50; $mail->IsHTML(false); $mail->Subject = "AuthSMTP Test"; $mail->Body = "AuthSMTP Test Message!"; $mail->AddAttachment("matt.txt"); echo "Message Sent OK<p></p>\n"; } catch (phpmailerException $e) { echo $e->errorMessage(); //Pretty error messages from PHPMailer } catch (Exception $e) { echo $e->getMessage(); //Boring error messages from anything else! }
答え :
解決策:
ファイルのフルパスと、2つまたは3つの引数を除くファイル名関数を指定する必要があります
// Setup mail class, recipients and body
$mailer->AddAttachment('/home/mywebsite/public_html/file.zip', 'file.zip');
答え :
解決策:
これはまだ終了していないので、まったく同じ問題が発生したので、自分に合った解決策を提供しようと思いました。 以前のメーラーはそれが正しかったと思います。ファイルへの絶対パスを特定する必要があります。これは、特に共有サーバーで操作する場合は、必ずしも簡単なことではありません。いずれにせよ、私は自分のページに次のコードを埋め込み、そのページへの正確なパスをエコーアウトしました。そこから、添付したいファイルを保持しているディレクトリにレベルをドロップする方法を簡単に理解できました。
'var_dump(stream_resolve_include_path("Thankyou.php"));'
その行をコピーして貼り付け、ページに挿入するだけで、ページ名を挿入し、挿入したThankyou.phpを置き換えます(引用符は保持します)。ページを実行して、絶対パスを取得します。あとで削除して、PHPMailerのAddAttachmentセグメントに新しいパスを挿入するだけです。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。