Ciao a tutti,
ho casualmente scoperto questo framework e ho deciso di usarlo per un semplice sito di invio documenti tramite email.
Sono riuscito con poco sforzo ad implementare l’autenticazione con ldap e gestire l’autorizzazione per utenti guest/loggati/admin.
Tutto funziona correttamente se non fosse che le email vengono inviate solo se prive d’allegato!
il codice che uso per l’invio è il seguente:
public function sendEmail() {
if ($this->validate()) {
$mail = Yii::$app->mailer->compose()
->setTo($this->receiver)
->setFrom(Yii::$app->params['sender'])
->setSubject($this->subject)
->setTextBody($this->body);
foreach ($this->docs as $doc) {
$filename = realpath('.' . DocsController::getDocFullPath($doc));
$mail->attach(Swift_Attachment::fromPath($filename));
}
$mail->send();
return true;
}
return false;
}
la funzione DocsController::getDocFullPath è semplicemente la seguente
public static function getDocFullPath($filename) {
return Yii::$aliases['@web'] . '/docs/' . $filename;
}
L’errore che ricevo è:
PHP Warning – yii\base\ErrorException
fopen(Content-Type: application/pdf; name=Documento.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=Documento.pdf
JVBERi0xLjUNJeLjz9MNCjQxIDAgb2JqDTw8L0xpbmVhcml6....Rg0K): failed to open stream: Invalid argument
1. in /Users/alessio/Documents/NetBeansProjects/PHP/FaxEmail/vendor/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php at line 142
133134135136137138139140141142143144145146147148149150151 /** Not used */
protected function _flush()
{
}
/** Get the resource for reading */
private function _getReadHandle()
{
if (!isset($this->_reader)) {
if (!$this->_reader = fopen($this->_path, 'rb')) { <-------L'ERRORE È IN QUESTA RIGA
throw new Swift_IoException(
'Unable to open file for reading ['.$this->_path.']'
);
}
if ($this->_offset != 0) {
$this->_getReadStreamSeekableStatus();
$this->_seekReadStreamToPosition($this->_offset);
}
}
Questo errore capita scegliendo qualsiasi file.
I file esistono e la directory che li contiene ha permessi di lettura e scrittura da chiunque.
commentando la riga $mail->attach(Swift_Attachment::fromPath($filename)); l’invio avviene senza problemi.
Qualcuno sa come risolverlo?
Grazie in anticipo.
Alessio