PHP Swift 邮件程序设置
Posted
技术标签:
【中文标题】PHP Swift 邮件程序设置【英文标题】:PHP Swift Mailer Setup 【发布时间】:2012-10-16 23:38:11 【问题描述】:我正在尝试在我的网站中实施 swift mailer,以便向注册用户发送密码恢复电子邮件。我正在使用 Dreamweaver。我做了什么:
1) Downloaded Swift-4.2.2.tar
2) Extracted it
3) Uploaded to my host in /Domain/classes/lib
4) Included it in Recovery.php
这是我的文件结构
Main Folder
|classes
|Swift
|Private
|Recovery.php
这是Recovery.php
的代码:
require_once '../classes/lib/swift_required.php';
// Create the Transport
$email_to = $_POST["email"];
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465)
->setUsername('Username')
->setPassword('Password')
;
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$message = Swift_Message::newInstance()
// Give the message a subject
->setSubject('Password Recovery')
// Set the From address with an associative array
->setFrom(array('Username@domain.com' => 'Username'))
// Set the To addresses with an associative array
->setTo($email_to)
// Give it a body
->setBody('Below is your temporary password. Please make sure to login in immediately and change it to a password of your choice.\n'.$password);
// Send the message
$result = $mailer->send($message);
但这不包括库,因为如果我这样做Swift_SmtpTransport::
,那么dreamweaver 应该弹出一个智能感知的东西,它给我方法或变量的选项,这意味着它可以看到类及其所有成员项。但由于它没有弹出选项,我觉得它看不到 swift 类是什么。当我尝试运行它时,控制台网络选项卡说它在返回500 Internal Server Error
之前等待了一段时间。所以它没有正确包含库。知道我做错了什么吗?
编辑: 错误报告输出:
Warning: require(/*/*/*/Main Folder/classes/lib/classes/Swift.php): failed to open stream: No such file or directory in /*/*/*/Main Folder/classes/lib/swift_required.php on line 22
Fatal error: require(): Failed opening required '/*/*/*/Main Folder/classes/lib/classes/Swift.php' (include_path='.:/usr/local/lib/php') in /*/*/*/Main Folder/classes/lib/swift_required.php on line 22
【问题讨论】:
是否启用了error_reporting?如果出现 500 个错误,error.log 会说什么?而且,顺便说一句,IDE 行为不相关。 @mario 我没有启用 error_reporting。但我认为这不会有帮助,因为Recovery.php
是使用主页上的 ajax 调用的。如何显示任何错误报告输出?
直接访问Recovery.php
即可。
您是否更改了swift_required.php
文件位置?
@freon 一点也不。我只是从 rar 中复制了 lib 文件夹并将其粘贴到我的 classes 文件夹中。没有变化
【参考方案1】:
打开 swift_required.php 文件。第 22 行有一个 require()。调整它的路径以匹配 lib/classes/Swift.php
【讨论】:
所以swift_required.php
的第 22 行读取为require dirname(__FILE__) . '/classes/Swift.php';
。你到底想让我怎么改?
require './classes/Swift.php';
仍然出现错误。现在我有这个错误:Warning: require(./classes/Swift.php): failed to open stream: No such file or directory in /*/*/*/Main Folder/classes/lib/swift_required.php on line 22 Fatal error: require(): Failed opening required './classes/Swift.php' (include_path='.:/usr/local/lib/php') in /*/*/*/Main Folder/classes/lib/swift_required.php on line 22
nvm 现在没有明显的原因可以工作。我真的把它恢复到以前的状态,它开始工作了。谢谢【参考方案2】:
当您检查 swift_required.php 中的路径时,可能会有所帮助,从调用文件的角度来看,它们必须是正确的
【讨论】:
【参考方案3】:尝试使用绝对路径而不是相对路径
例如在linux中
require_once '/var/www/project/mailer/lib/swift_required.php' ;
或者尝试将上面的行替换为
require_once '/path/to/mailer/lib/swift_init.php';
swift mailer 使用它自己的类自动加载器,你已经有其他的自动加载器了吗?
【讨论】:
以上是关于PHP Swift 邮件程序设置的主要内容,如果未能解决你的问题,请参考以下文章