2016-05-23 4 views
1

私は顧客の1人のウェブサイトを公開しましたが、連絡先フォームが適切に機能するようになっています。PHPメールがローカルの電子メールサーバに送信されています

ウェブサイトはサーバーA(DirectAdminを使用)でホストされています。 電子メールは、DNS内の他のMXエントリを使用して外部企業(「サーバーB」)でホストされています。

連絡先フォームは、すべての電子メールをサーバーBの[email protected]に送信することになっています。ただし、電子メールはサーバーBの外部電子メールボックスに送信されていませんが、サーバーAのローカル電子メールボックスに送信されます。

電子メールドメインはDirectAdminのドメインと一致するため、電子メールはローカルであると考えています。

これを避ける方法はありますか? PHP電子メールを将来的に電子メールがローカルではないことを知っているように?または、SMTPを使用する唯一のオプションはありますか?

+0

でそれを呼び出しますか、同じ名前に一致する 'server A'上にいくつかの電子メールアカウントが作成されています。解決策は、 'サーバA '上の参照をドメインおよび/または電子メールアカウントに取り除くことです。私は単純なウェブホストが問題を引き起こすとは思わない。 – rsz

+1

私はホスティングサービスにこの問題があった。ローカルDNSサーバーは私のドメイン用に構成されていましたが、私は他の場所でDNSをホストしていました。これは、Supportが手動で自分のDNSから自分のドメインを削除したときにのみ解決されました。 –

+0

実際、私はDirectAdminにローカル電子メールサーバーのチェックを外し、使用されたMXレコードを変更する機能があることに気付きました。おそらくそれは仕事をするだろう、それのように聞こえる。 – Jason

答えて

1

私はSMTPが進むべき道であることをお勧め、スパムフィルタの観点から、とにかく私はそれでより良い結果を得る私を見つけたなど

私の好適な解決策を使用することです:https://github.com/PHPMailer/PHPMailer

私が持っています**それが簡単に私はそれを

を実装するために作るためにヘルパー機能を内蔵し機能 - ファイル名:smtp.function **

<?php 


//SMTP controller FUNCTION for PHPMailer script 
//source of script: https://github.com/PHPMailer/PHPMailer 
require ('PHPMailer-master/PHPMailerAutoload.php'); 

function SMTP 
($to, $subject,$html, $text='') 
{ 

    //UPDATE SETTINGS TO MATCH PROJECT SETTINGS 
    $settings = array('host'=>'XXXXXX','username'=>'XXXXXX','password'=>'XXXXXX','fromEmail'=>'XXXXXX', 'fromName'=>'XXXXXX','replyEmail'=>'XXXXXX', 'replyName'=>'XXXXXX'); 


     $mail = new PHPMailer; 

      //$mail->SMTPDebug = 3;        // Enable verbose debug output 
      $mail->isSMTP();          // Set mailer to use SMTP 
      $mail->Host = $settings['host']; // Specify main and backup SMTP servers 
      $mail->SMTPAuth = true;        // Enable SMTP authentication 
      $mail->Username = $settings['username'];     // SMTP username 
      $mail->Password = $settings['password'];       // SMTP password 
      $mail->SMTPSecure = 'tls';       // Enable TLS encryption, `ssl` also accepted 
      $mail->Port = 587;         // TCP port to connect to 
      $mail->From = $settings['fromEmail']; 
      $mail->FromName = $settings['fromName']; 
      //$mail->addAddress('[email protected]', 'Joe User');  // Add a recipient 
      $mail->addAddress($to);    // Name is optional 
      $mail->addReplyTo($settings['replyEmail'], $settings['replyName']); 
      $mail->isHTML(true);         // Set email format to HTML 
      $mail->Subject = $subject; 
      $mail->Body = $html; 
      $mail->AltBody = $text; 



//WHAT TO DO IF EMAIL SENDS OR NOT 
      if(!$mail->send()) { 
       echo 'Message could not be sent.'; 
       echo 'Mailer Error: ' . $mail->ErrorInfo; 
      } 

      else { 
       echo 'Message has been sent'; 
      } 



} 


?> 

は(あなたがホストされた独自のDNSサービスを持っている場合は、この)は、例えば、ドメイン名がローカルバインドで作成されたか、DNSリゾルバが何であれ、他の理由があるかもしれません、うまくPHP

<?php 
require('smtp.function'); 

SMTP('[email protected]',' This is a test of the SMTP class by Alex','<strong>This test</strong> is <a href="http://www.google.co.uk">HTML CODE</a>'); 




?> 
+0

サーバAのMXレコードを変更して動作させました。 私は間違いなくこれを調べます。これは確かに迷惑メールフィルタの点ではるかに良い方法です。どうもありがとう! – Jason

+1

DNSレコードが混乱している場合、サードパーティの電子メールプロバイダが見つからない限り、このソリューションはまったく動作しません。「SMTPへの切り替え」は、最も混乱しやすいアドバイスです。 –

関連する問題