我想在我建立的网站上安装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仓库下载来我怎样才能解决这个问题?
这可能是因为我的服务器当前正在运行php55而不是7 – arrydavid
您是否通过删除单个'?'进行检查?从声明? –
PHP版本可能会导致此问题。正如他们所提到的,Swift Mailer是一个基于组件的PHP 7邮件解决方案。 –