Swiftmailer - 未捕获错误:调用未定义的方法Swift_SmtpTransport :: newInstance()

时间:2017-07-20 23:52:01

标签: php php-7 swiftmailer

我正在尝试使用def __getitem__(self, index): if self.train: img, target = self.train_data[index], self.train_labels[index] else: img, target = self.test_data[index], self.test_labels[index] # doing this so that it is consistent with all other datasets # to return a PIL Image img = Image.fromarray(img) if self.transform is not None: img = self.transform(img) if self.target_transform is not None: target = self.target_transform(target) return img, target 发送电子邮件。

我收到了一个未捕获的错误:

  

调用未定义的方法Swift_SmtpTransport :: newInstance()。

以下是代码:

Swiftmailer

基于上面的代码,会导致这个错误的原因是什么?

2 个答案:

答案 0 :(得分:14)

我对SwiftMailer并不熟悉,但是从您提供的错误的简要概述及其文档页面,我建议您尝试使用new运算符。从错误中可以清楚地看出 Swift_SmtpTransport类没有newInstance方法,因此当您使用它创建新实例时,它会抛出错误。也许尝试使用它:

require_once 'swift/lib/swift_required.php';

$transport = new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl');
$transport->setUsername('email@gmail.com')->setPassword('password');

$mailer = new Swift_Mailer($transport);

$message = new Swift_Message('Weekly Hours');
$message
   ->setFrom(['email@gmail.com' => 'My Name'])
   ->setTo(['email@hotmail.com' => 'Recipient'])
   ->setSubject('Weekly Hours')
   ->setBody('Test Message', 'text/html');

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

编辑:PHP在实例化对象(不带括号)后不允许直接方法调用。谢谢,Art Geigel。

答案 1 :(得分:0)

Swift_Mailer::newInstance($transport);

newInstance 方法在 5.4 版本中可用,在较新的版本中,它被删除。 检查 composer.json 中的版本。

"swiftmailer/swiftmailer": "^5.4"