2017-09-28 57 views
0

我想在我建立的网站上安装swiftmailer。我有一个HTML联系表单,它使用javascript验证电子邮件地址,然后使用jQuery后的ajax调用我的PHP文件发送电子邮件。如果成功的PHP将返回'succ'到jquery以显示正确的HTMLSwiftmailer解析错误EsmtpTransport

在浏览器中,我从我的javascript(请稍后尝试)获取错误响应,并在我的日志文件中提交了此错误现场:

PHP Parse error: syntax error, unexpected '?' in /home/mycpanel/public_html/mywebsite.com/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php on line 211 

这指的是这样的代码:

/** 
    * Returns the IP used to connect to the destination. 
    * 
    * @return string 
    */ 
    public function getSourceIp() 
    { 
     return $this->params['sourceIp'] ?? null; 
    } 

这是我验证了电子邮件(用于字符等检查)页面上的JavaScript。对我的PHP代码mymail.php文件进行ajax调用并等待响应。如果响应是'succ',它将显示成功的HTML。否则它会显示错误。

$(document).ready(function(e) { 
     $('#myID').submit(function(e) { 
      e.preventDefault(); 
      var form = $(this); 
      var em = form.find('#Email'); 
      var x = true; 

      var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
      if(em.val().trim() == '' || !regex.test(em.val())) { 
       em.css('border-bottom','1px solid red'); 
       $('.myId-msg .myId-valid').text('Please enter valid e-mail...').addClass('error-message'); 
       $('.myId-msg').addClass("show-block-error").removeClass("show-block-valid"); 
       x = false; 
      } else { 
       em.css('border-bottom','1px solid #eaeaea'); 
       em.parent().find('.err-msg').remove(); 
      } 
      if(x==false) { 
       return false; 
      }else{ 


      $.ajax({ 
       url: "example.com/mymail.php", 
       type: 'POST', 
       data: form.serialize()    
       }).done(function(res) 
{if(res == 'succ') { 
        $('.myId-msg .notify-valid').text('Your information has been sent successfully...').addClass('error-message'); 
        $(".myId-msg").addClass("show-block-valid").removeClass("show-block-error"); 
        form[0].reset(); 
       } else { 
        $('.myId-msg').addClass("show-block-error").removeClass("show-block-valid"); 
        $('.myId-msg .myId-valid').text('Please try again.').addClass('error-message'); 
       } 
       }); 
      } 
     }); 

,这是我的PHP

<?php 
    // import the required stuffs 
    require_once 'swiftmailer/lib/swift_required.php'; 
    //set post to emaila 
    $emaila = $_POST[('email')]; 

    // Create the mail transport configuration. I am using shared hosting which gave me my server information for SMTP 
    $transport = Swift_SmtpTransport::newInstance('server.domain.com', 465, 'ssl') 
     ->setUsername('[email protected]') 
     ->setPassword('my_secret_pw') 
     ; 
    // Create the mailer 
    $mailer= Swift_Mailer::newInstance($transport); 

    // Create a message 
    $message = Swift_Message::newInstance('Subject') 
     ->setFrom(array('[email protected]' => 'My Name')) 
     ->setTo(array($emaila)) 
     ->setBody('Here is the message itself') 
     ; 

    $result = $mailer->send($message); 

    if ($mailer->send($message)) { 

     echo 'succ'; 

    } 

    ?> 

当它说语法错误是从库文件我从git仓库下载来我怎样才能解决这个问题?

+0

这可能是因为我的服务器当前正在运行php55而不是7 – arrydavid

+0

您是否通过删除单个'?'进行检查?从声明? –

+0

PHP版本可能会导致此问题。正如他们所提到的,Swift Mailer是一个基于组件的PHP 7邮件解决方案。 –

回答

0

此问题是因为我使用的是php5.5。由于遗留CMS系统使用折旧的mysql扩展,我无法升级到php7。

使用老版本的swiftmailer修复了这个问题。

+0

很高兴你的问题现在已经修复。 –