1

php mail()関数を使用してメールを送信する際に問題が発生します。私が持っているphpスクリプトは、別のWebホスティング会社に同じコピーがあり、そこで機能するため、機能することを知っています。

それはウェブホスティング会社自体に関係していると思います。それを機能させるために私が何をする必要があるか知っている人はいますか?インストールするように指示する必要があるものはありますか?Apacheで実行されていると思います。

ありがとう、アミット

明確にするために、ここにメールスクリプトがあります。

<?php

$to = 'my@email.com';
$subject = 'Contact from your website';

$message = 
'Below are details from the Contact Us Form ' . "\n\n" . 
'Name: ' . $_REQUEST['name'] . "\n\n" . 
'Telephone Number: ' . $_REQUEST['phone'] . "\n\n" . 
'E-mail address: ' . $_REQUEST['email'] . "\n\n" . 
'Comments: ' . $_REQUEST['comments'];

$email = $_REQUEST['email'];
$headers = 'From: ' . $email . "\r\n" .
            'Reply-To: ' . $email . "\r\n" .
          'X-Mailer: PHP/' . phpversion();
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/plain; charset=ISO-8859-1";       

//SPAM CHECK
$str = $_REQUEST['spam'];
$strE = $_REQUEST['email'];

if( $str != "10" || $strE == "")
{
    echo "<div align='center' style='color:red'>One or more of the form fields were incorrect, you will be redirected to the contact page within 3 seconds.</div>";
?><meta http-equiv="refresh" content="3;URL=http://engineercreativity.com/samples/biz/contact"><!-- EDIT THIS -->

<?php   
} else {
    mail ($to, $subject, $message, $headers);
?>
<meta http-equiv="refresh" content="0;URL=http://engineercreativity.com/thankyou.html"> <!-- EDIT THIS AS WELL -->
<!--
<div class="text" align="center" style="text-align: center; color: green;">
<br/>
Thank you for contacting us!
<br/>
The message was succesfully sent!
</div>
-->
<?php
} 
?> 
4

5 に答える 5

2

メール機能のチェックをしていますか?正常に実行されている場合はtrueを返す必要があります。これにより、フィルター、サーバー、SMTP構成など、メールを受信できない可能性のある他の理由を減らすことができます。次のようなことを行います。

if (mail($to, $subject, $body, $header)) {
echo("<p>Message successfully sent!</p>");
} else {
echo("<p>Message delivery failed...</p>");
}

より良いアイデアが得られるはずであり、何らかの理由で関数が存在しない場合は完全に消滅するはずです。PHPのメール機能は、スパム目的で一般的に悪用されているため、無料のWebホストでは非常に厄介です。

完全なヘッダーを投稿すると、正当なメッセージがスパムテストに合格するのにも役立ちます。

   $headers = "Return-path: <sendingemail@test.com>\n";
                $headers .= "Reply-to: <sendingemail@test.com>"."\n";
                $headers .= "Content-Type: text/html; charset=windows-1252\n";
                $headers .= "Content-Transfer-Encoding: 7bit\n";
                $headers .= "From: <sendingemail@test.com>\n";
                $headers .= "X-Priority: 3\n";
                $headers .= "MIME-Version: 1.0\n";
                $headers .= "Organization: My Organization\r\n"; 
                $headers .= "\n\n";
于 2010-07-16T15:15:49.153 に答える
2

専用サーバーの場合は、postFix Mailがインストールされていることを確認してください(http://www.postfix.org/

SMTPサーバーが利用できなかったため、今日このエラーに直面しました(デフォルトではあると想定していましたが、そうではありませんでした)

于 2010-07-16T19:31:32.910 に答える
1

次のような本当に単純なスクリプトを書く

<?php
mail('your_mail@example.com', 'test subject', 'test msg') or die('no mail()');
echo 'mail sent.';

それを実行し、メールがスパムフィルターに捕らえられていないことを確認します(余裕があれば、独自のドメイン/ DNSサーバーを設定するだけnetcat -l -p 25で十分です)。

それでも問題が解決しない場合は、ウェブホスティングサービスのサポートに連絡してください。FAQやその他のドキュメントはありますか?

于 2010-07-16T15:17:00.290 に答える
1

解決策が何であれ、mail()の出力を確認してください。

最も一般的な解決策

現在のウェブホストでスクリプトからのメールを中継するようにSMTPが設定されているかどうかをホスティング会社に問い合わせてください。「いいえ」と答えた場合は、smtp.example.comなどの別のSMTPホストを使用している可能性があります。または、別のSMTPリレーを使用する必要があります(現在の電子メールプロバイダーに確認してください)。

話しているSMTPサーバーは、スクリプトの内容を理解していない可能性があります。メールスクリプトがPostfixで機能するが、qmailでは機能しない状況を以前に見たことがあります。これは、サードパーティの電子メールライブラリを使用することで簡単に解決できます。そこにはたくさんありますが、私のお気に入りはFlourish(http://flourishlib.com/docs/fEmail)です。

于 2010-07-16T15:26:32.623 に答える
0

phpのmail()関数は、メールをジャンクにのみ送信します。代わりに、SMTPphpメーラー関数を使用してください。

PHP mail()の代わりにSMTPを使用する必要がある理由:

SMTPは、メールサーバーの実際のアカウントにログインし、SMTPを介して別のメールサーバーにメールを送信します。メールサーバーが正しく構成されている場合、メールはメールサーバーの実際のアカウントから送信され、スパムとしてフラグが立てられることはありません。

mail()関数で送信されるメールは、ほとんどの場合、sendmailで送信されます。認証は行われておらず、追加のヘッダーで「From:」を使用すると、ほとんどの場合スパムとしてフラグが立てられます。

これは、Gmailなどの元のメールファイルを見ると、送信されたヘッダーが表示されるためです。メール機能に指示したように、someone @ example.comではなく、user@serverhostname.tldから実際に送信しています。SMTPを使用して元のメールを表示する場合、メールは実際にはsomeone@example.comから送信されます。

SMTPクラスは次の場所からダウンロードできます。

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
于 2013-11-19T09:32:26.727 に答える