使用 XAMPP 的 Swiftmailer 问题

Posted

技术标签:

【中文标题】使用 XAMPP 的 Swiftmailer 问题【英文标题】:Issues with Swiftmailer using XAMPP 【发布时间】:2019-07-27 05:29:46 【问题描述】:

我已经使用 composer 下载了 Swift-mailer,但是当我去测试它时,我不断收到错误消息。

这是我设置的设置:

<?php
require_once '/path/to/vendor/autoload.php';

// Create the Transport
 $transport = (new Swift_SmtpTransport('smtp.justbitestreats.com', >25))
->setUsername('XXXXXX')
->setPassword('XXXXXX');

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message('Wonderful Subject'))
->setFrom(['julie.mercer@justbitestreats.com' => 'Julie'])
->setTo(['jbtreats@yahoo.com', 'other@domain.org' => 'JBT'])
->setBody('Here is the message itself');

// Send the message
$result = $mailer->send($message);

我也尝试过使用 sendmail:

<?php
require_once '/path/to/vendor/autoload.php'(include_path='D:\xampp\php\PEAR');
// Create the Transport
$transport = new Swift_SendmailTransport('/usr/sbin/sendmail -bs');

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$message = (new Swift_Message('Wonderful Subject'))
->setFrom(['julie.mercer@justbitestreats.com' => 'Julie'])
->setTo(['jbtreats@yahoo.com' => 'A name'])
->setBody('Here is the message itself');

// Send the message
$result = $mailer->send($message);

我不断收到相同的错误消息

这是错误信息:

警告:require_once(/path/to/vendor/autoload.php):打开失败 流:中没有这样的文件或目录 D:\xampp\htdocs\dashboard\JBT-Emails\sendmail.php 在第 2 行

致命错误:require_once():需要打开失败 '/path/to/vendor/autoload.php' (include_path='D:\xampp\php\PEAR') 在 D:\xampp\htdocs\dashboard\JBT-Emails\sendmail.php 在第 2 行

【问题讨论】:

您似乎正在尝试访问一个不存在的文件。 【参考方案1】:

如果你在 PHP 中通过 composer 下载了一个包,那么你应该像这样包含自动加载器-

require_once realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR . './vendor/autoload.php');

我在您的错误中注意到您的路径是-

D:\xampp\htdocs\dashboard\JBT-Emails\sendmail.php

如果您直接在sendmail.php 中包含供应商文件夹,那么它可能不起作用,因此您应该尝试提供我上面提到的完整路径,它会找到该文件。

【讨论】:

我相信 vendor 文件夹存在于您的 JBT-Emails 文件夹中。请确认。 好的,这是供应商文件所在的路径:D:\xampp\htdocs\dashboard\JBT-Emails\Swiftmailer\vendor 并且 autoload.php 与供应商文件一起位于供应商文件中测试邮件,我还需要将上面的代码添加到我的测试邮件吗? 如果您的测试电子邮件 php 文件和 autoload.php 文件在同一个文件夹中,那么试试这个 - require_once realpath(dirname(FILE) . DIRECTORY_SEPARATOR . './autoload. php'); 好的,现在错误消息是:警告:使用未定义的常量文件 - 假定为 D:\xampp\htdocs\dashboard 中的“文件”(这将在 PHP 的未来版本中引发错误) \JBT-Emails\Swiftmailer\vendor\sendmail.php 在第 3 行 好的,我的答案已自动更正。请在 FILE 前后添加两个下划线。像这样__FILE__

以上是关于使用 XAMPP 的 Swiftmailer 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swiftmailer 时如何设置回复

有没有一种正确的方法可以在 symfony 中使用 SwiftMailer 包将 NTLM 身份验证类型添加到 SwiftMailer 中?

Yii2中如何使用swiftMailer

使用 SwiftMailer 的 PHP 附件

如何在 SwiftMailer 中关闭 SMTP 连接

为啥 swiftmailer 不采用环境变量?