我是Swiftmailer的新手,正在尝试通过localhost(XAMPP)上的HTML联系表单发送邮件。按“提交”按钮后,错误显示为:
致命错误:未找到类'Swift_SmtpTransport' /Applications/XAMPP/xamppfiles/htdocs/testsite/sendmessage.php在线 23
第23,24和25行是本节:
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
->setUsername('foobar@googlemail.com')
->setPassword('GENERATED PASSWORD');
我希望此时发送邮件,并向我显示“邮件已发送”消息,以及PHP文件中的回显行,但是当我看到"Mail Sent"
确认时,我也是得到错误,我没有收到电子邮件。
我查阅过文档here,'sendmessage.php'
中包含的代码似乎是正确的:
<?php
error_reporting(E_ALL);
echo getcwd();
echo function_exists('proc_open') ? "Yep, that will work" : "Sorry, that won't work";
require_once(dirname(__FILE__)."/swift.php");
echo 'Mail sent <br />';
// Grab the post data
$name = filter_var($_POST['Name'], FILTER_SANITIZE_STRING);
$usermail = filter_var($_POST['Email'], FILTER_SANITIZE_EMAIL);
$content = filter_var($_POST['Message'], FILTER_SANITIZE_STRING);
// Construct the body of the email
$data = "Name: " . $name . "<br />" . "Email: " . $usermail . "<br />" . "Message: " . $content;
// Create the transport
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
->setUsername('foobar@googlemail.com')
->setPassword('GENERATED PASSWORD');
echo 'line 26 <br />';
// Create the mailer using the created transport
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('This is the subject')
->setFrom(array('foobar@googlemail.com' => 'Feedback Received From User'))
->setTo(array('barfoo@gmail.com', 'foobar@googlemail.com' => 'Lead Recipients'))
->setSubject('Here is your Feedback subject')
->setBody($data, 'text/html');
echo 'line 34 <br />';
// Send the message
$result = $mailer -> send($message);
echo $result;
echo 'line 39<br />';
?>
proc_open
会返回"Yep, that will work"
,但如上所述,我的收件箱中没有收到该电子邮件。
我尝试将相关线路上的端口更改为25和486,但没有成功。
在谷歌搜索之后,我遇到this question似乎有同样的问题,但接受的答案并没有解决我的问题。
请注意,我的联系表单中有错误previous question,此问题随之而来。
答案 0 :(得分:1)
似乎SwiftMailer没有正确加载或完全加载。我不能保证它会有任何帮助,但请尝试以下方法:
将GIT克隆放入源(html或htdocs)目录(请参阅https://github.com/swiftmailer/swiftmailer/blob/5.x/doc/installing.rst)。
这应该为您提供一个名为&#34; swiftmailer&#34;的目录,并且您从中加载swiftmailer的脚本应该位于同一目录中。然后改变你的&#34; require_once&#34;如下:
require_once("swiftmailer/lib/swift_required.php");
我只是粗略地浏览一下swiftmailer的来源,但是如果我没弄错的话,它应该自动完成剩下的工作,包括加载Swift_SmtpTransport类。