Функция электронной почты не отправляется: хостинг-сервер godaddy

#php #email #phpmailer

#php #Адрес электронной почты #phpmailer

Вопрос:

Я создал функцию электронной почты на php, мои файлы и весь хостинг — godaddy. когда я отправляю свою форму, почта не отправляется, она переходит в состояние if, внутри которого отображается сообщение об ошибке — почта не отправлена успешно!. пожалуйста, кто-нибудь, помогите мне .. мой код функции Php — blow:

 <?php
include("/home/mu3c3ezzh1cs/public_html/mailer/class.phpmailer.php");
 if(isset($_POST['submit'])){
  $name         = $_POST['name'];
  $email        = $_POST['email'];
  $mobile       = $_POST['phone'];
  $location     = $_POST['location'];
  $decs         = $_POST['desc'];
  $contact_name ="Please check the Requirement";
  $message = "";
  $subject_thankyou = "Enquiry Acknowledgement from abc.";
  $message_thankyou = "<p>Dear ".$name.",</p><p>We just received your enquiry. We will get back to you as soon as possible. Thank you for the interest shown on .</p><p>Best Regards<br /> abc<br/> Web :<a href='http://abc.in'>www.abc.in</a></p>";
  $mail = new PHPMailer;
  $mail->IsSMTP(); // enable SMTP
  $mail->SMTPDebug = 0;  // debugging: 1 = errors and messages, 2 = messages only
  $mail->SMTPAuth  = true;  // authentication enabled
  $mail->SMTPSecure = 'ssl';
  $mail->Host     = "hostname";/*Specify main and backup SMTP servers*/
  $mail->Port     = 465;
  $mail->SMTPAuth = true;/*Enable SMTP authentication*/
  $mail->Username = "username";/*SMTP username*/
  $mail->Password = "password";/*SMTP password*/
  $mail->setFrom('info@abd.com', 'abc');
  $mail->addAddress($email , $name);
  $mail->isHTML(true);
  $mail->Subject = $subject_thankyou;
  $mail->Body    = $message_thankyou;
  $mail->AltBody = $subject_thankyou;
  $mail->send();
  $subject ='Enquiry for abc'; 

  $email_header ='<html style="color: rgb(34, 34, 34); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); max-width: 575px; line-height: 18px; font-size: 12px; font-family: Arial, Helvetica, sans-serif;">
                    <head>
                      <meta name="viewport" content="width=device-width" />
                      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
                  </head>
                  <body bgcolor="#FFFFFF" text="#000000"  style="color: rgb(34, 34, 34); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); max-width: 575px; line-height: 18px; font-size: 12px; font-family: Arial, Helvetica, sans-serif;">
                  <table style="font-family:Helvetica,Arial,sans-serif;background:#EFEDED;padding:0 0 10px 0;" cellpadding="0" cellspacing="0" bgcolor="#EFEDED" border="0" width="100%">
                  <tbody>
                  <tr>
                  <td align="center">
                  <table width="96%" cellpadding="0" cellspacing="0"border="0">
                  <tbody>              
                  <tr>
                  <td style="border-top:5px solid #1e96d3;background:#fff;margin:0; padding:20px; border-spacing:0px;">';

  $email_footer = '</td>
                    </tr>               
                    </tbody>
                    </table>
                    </td>
                    </tr>
                    </tbody>
                    </table>
                    </td>
                    </tr>              
                    </tbody>
                    </table>
                    </body>
                    </html>';

    $body = $email_header.
        '<table width="100%" cellpadding="0" cellspacing="0">
              <tr>
              <td style="margin:0; padding:0px 0px 15px 0px; border-spacing:0px;">
              <p style="font-size:14px; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-weight: bold; line-height: 1.5em; margin: 0px; padding: 0.4em; text-align: left;">
              '.$subject.'
              </p>
              </td>
              </tr>
              <tr>
              <td style="margin:0; padding:0px 0px 15px 0px; border-spacing:0px;">
              <p style="color:#000; font-size:13px; margin:0; font-family:Arial, Helvetica,sans-serif;">
              <strong>
              '.$contact_name.',
              </strong>
              <br>
              </p>
              </td>
              </tr>                     
              <tr>
              <td style="margin:0; padding:0 0 5px 0;">
              <p style="font-size:13px; background-color: rgb(234, 234, 234); color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-weight: bold; line-height: 1.5em; margin: 0px; padding: 0.4em; text-align: left;">
              Details:
              </p>
              </td>
              </tr>
              <tr>
              <td style="margin:0; padding:0px 0px 15px 0px; border-spacing:0px;">
              <table style="font-family:Helvetica,Arial,sans-serif; font-size:12px; font-weight:bold; margin-top:10px; width:100%">
              <tbody>
              <tr>
              <td style="width:120px; padding:4px 0;">
              Name
              </td>  
              <td style="padding-right:10px;">
              :
              </td>
              <td style="font-weight:normal;">
              '.$name.'
              </td>
              </tr>
              <tr>
              <td style="padding:4px 0;">
              Phone Number
              </td>
              <td>
              :
              </td>
              <td style="font-weight:normal;">
              '.$mobile.'
              </td>
              </tr>
        <tr>
              <td style="padding:4px 0;">
              Email
              </td>
              <td>
              :
              </td>
              <td style="font-weight:normal;">
              '.$email.'
              </td>
              </tr>
        <tr>
              <td style="padding:4px 0;">
              Location
              </td>
              <td>
              :
              </td>
              <td style="font-weight:normal;">
              '.$location.'
              </td>
              </tr>
              <tr>
              <td style="padding:4px 0;">
              Description
              </td>
              <td>
              :
              </td>
              <td style="font-weight:normal;">
              '.$decs.'
              </td>
              </tr>
              </tbody>
              </table>
              </td>
              </tr>
              </table>'
              .$email_footer;
    $message .= $body;
    $mail = new PHPMailer;
    $mail->IsSMTP(); // enable SMTP
    $mail->SMTPDebug = 0;  // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true;
    $mail->SMTPSecure= false;  
    $mail->Host     = "hostname";
    $mail->Port     = 465;
    $mail->SMTPAuth = true;/*Enable SMTP authentication*/
    $mail->Username = "username";
    $mail->Password = "password";
    $mail->setFrom('info@abc.com', $name);
    $mail->addAddress('abc@gmail.com' , 'abc');
    $mail->isHTML(true);

  if(!$mail->Send()) {
            ?>
                  <script type="text/javascript">
                   window.alert("mail not sent successfully!");
                  // window.location.href="thanks.php";
                </script>
                 <?php
          }
           else{
         ?>
              <script type="text/javascript">
               window.location.href="thanks.php";
            </script>
             <?php
       }
     }
?>
  

Комментарии:

1. Может быть, вы могли бы получить причину ошибки непосредственно из PHPMailer , установив для SMTPDebug параметра значение 1?

2. Теперь это работает, я получаю почту.. в почте это отображается как — Предупреждение! Непроверенный отправитель. Мы не смогли проверить, действительно ли электронное письмо было от abc@gmail.com . Будьте осторожны при открытии любых ссылок / вложений, если таковые имеются, в этом электронном письме

3. Похоже, что оно не прошло через серверы Gmail, а было отправлено с собственных SMTP-серверов GoDaddy непосредственно получателю.

Ответ №1:

Корень проблемы: вы находитесь на GoDaddy.

GoDaddy не позволяет вам отправлять сообщения через какие-либо почтовые серверы, кроме их собственных (обычно используется почтовый сервер по адресу relay.secureserver.net ). Переключение на это решает одну проблему, но создает другую: Вы не можете отправлять сообщения с адреса gmail, если только вы не отправляете через сервер gmail; это не разрешено их правилами SPF, и ваши сообщения не будут содержать подпись gmail DKIM. Это означает, что ваши сообщения фактически являются подделками, вот почему вы видите такие предупреждения — честно говоря, я удивлен, что они вообще приходят.

Итак, есть два решения:

  1. Не отправляйте с адреса gmail, если вы не используете серверы gmail; отправляйте с домена, который разрешает отправку с серверов GoDaddy (т. Е. с вашего собственного домена).
  2. Не используйте GoDaddy; используйте другого хостинг-провайдера, который не блокирует исходящий SMTP.

Все это описано в документации PHPMailer.

Помимо этого, вы используете очень старую версию PHPMailer, которая глючит и уязвима, поэтому я предлагаю вам обновить и основывать свой код на приведенных примерах.