当我点击我的联系页面上的提交按钮,尝试提交使用swift-mailer的表单时,我明白了:
警告:fopen(上传/) [function.fopen]:无法打开 stream:没有这样的文件或目录 /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/ByteStream/FileByteStream.php 在第131行
Fatal error: Uncaught exception 'Swift_IoException' with message 'Unable to open file for reading [uploads/]' in /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/ByteStream/FileByteStream.php:133
Stack trace:
#0 /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/ByteStream/FileByteStream.php(77): Swift_ByteStream_FileByteStream->_getReadHandle()
#1 /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(660): Swift_ByteStream_FileByteStream->read(8192)
#2 /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(337): Swift_Mime_SimpleMimeEntity->_readStream(Object(Swift_ByteStream_FileByteStream))
#3 /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(448): Swift_Mime_SimpleMimeEntity->getBody()
#4 /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(463): Swift_Mime_SimpleMimeEntity->toString()
#5 /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/ in /home/polycys2/public_html/html/swift-mailer/lib/classes/Swift/ByteStream/FileByteStream.php on line 133
服务器上存在完整路径,但错误消息显示“没有此类文件或目录”。 可能是什么问题呢? 谢谢大家! 祝圣诞快乐!
答案 0 :(得分:9)
您需要提供uploads
的完整路径,而不是实际路径,因为这将被解释为相对于尝试打开附件的类文件。
在将路径传递给Swift之前尝试使用realpath
。
$ path = realpath('uploads /');
答案 1 :(得分:1)
谢谢大家的帮助! 问题是我的心不在焉 - 我忘了在那里创建'上传'目录。 现在它工作正常。 谢谢!
答案 2 :(得分:1)
这对我有用:
Controller.php
$mail = Yii::$app->mailer->compose('@app/mail/embed-mail',
[
'term' => Url::to('@webroot/images/term.png'),
'logo' => Url::to('@webroot/images/LOGO.jpg')
]
和embed-mail.php
<img src="<?= $message->embed($terminal); ?>"/>
<img src="<?= $message->embed($logo); ?>"/>
我希望这对您有用
答案 3 :(得分:0)
从错误消息中,您似乎指定了需要文件路径的目录。可能是因为缺少应该包含文件名的变量。