Addfile to mail

Status
Niet open voor verdere reacties.

bhofkens

Gebruiker
Lid geworden
19 jan 2008
Berichten
228
Ik heb voor een klant van me een formulier gemaakt waar de meesturen van bijlage gebruik ik de volgende scripts maar blijkbaar werkt dat niet meer goed bij PHP 5.3:

PHP:
$mail->addAttachment(new fileAttachment($_FILES["ontwerp"]["tmp_name"], 'application/octet-stream', null, $_FILES["ontwerp"]["name"]));

$mail->addAttachment(new fileAttachment($_FILES["ontwerp1"]["tmp_name"], 'application/octet-stream', null, $_FILES["ontwerp1"]["name"]));

$mail->addAttachment(new fileAttachment($_FILES["ontwerp2"]["tmp_name"], 'application/octet-stream', null, $_FILES["ontwerp2"]["name"]));

ze willen namelijk er eventueel drie bij kunnen voegen.

Heeft iemand een idee bij de PHP 5.2 versie werkte hij weer wel.
 
Laatst bewerkt:
Dit is niet echt een script, dit zijn drie regels code waarin 3x de methode addAttachment() van een object wordt aangeroepen :(

Wat werkt er niet?
Krijg je foutmeldingen? Zo ja, welke? Zo niet, staat het tonen van foutmeldingen aan?
Hoe ziet de methode addAttachement() er uit?
Hoe ziet de klasse fileAttachment er uit?

Kortom we hebben meer informatie nodig :)
 
addAttachment methode:

PHP:
public function addAttachment($attachment)
    {
        $this->attachments[] = $attachment;
    }

fileAttachment class:
PHP:
class fileAttachment extends attachment
{
    /**
    * Constructor
    * 
    * @param string $filename    Name of file
    * @param string $contentType Content type of file
    * @param string $encoding    What encoding to use
    */
    public function __construct($filename, $contentType = 'application/octet-stream', $encoding = null, $name=null)
    {
        $encoding = is_null($encoding) ? new Base64Encoding() : $encoding;
		$name = is_null($name) ? basename($filename) : $name;
        parent::__construct(file_get_contents($filename), $name, $contentType, $encoding);
    }
}

IK krijg geen foutmeldingen het formulier wel verstuurd, echter de bijlages zijn drie ATT000.. .dat. is bovenstaande voldoende. Klopt had meer info moeten sturen.
 
Je hebt PHP-foutmeldingen aan staan?
Anders is debuggen al onbegonnen werk namelijk.

Als je bij php.ini kunt komen:
You can set PHP error reporting on in php.ini file (in case you have access to this file). Set the following lines:

error_reporting = E_ALL
display_errors = On
Anders via .htaccess
If you have no access to php.ini file but you can modify .htaccess file on your server (in root of your public_hml folder - your Joomla! site), try to add the following code there (on some servers this option is disabled, so you need to ask your webhosting operator):

# Displaying PHP errors
php_flag display_errors on
php_value error_reporting 6143

Heb je al gekeken of het object dat $mail bevat daadwerkelijk attachements bevat na het aanroepen van de functies?
 
Zou je de oplossing hier nog willen plaatsen? :)
 
Natuurlijk blijkbaar was er iets uit het script weg bij de <form gedeelte namelijk:
HTML:
enctype="multipart/form-data"
die tekst moest er staan en er is ook gekeken of er een file toegevoegt is en zo niet weg laten met versturen want je kreeg een .dat file zo als hieronder opgelost:

PHP:
foreach($_FILES as $file){
   if($file['error'] == 0){
	$mail->addAttachment(new fileAttachment($file["tmp_name"], 'application/octet-stream', null, $file["name"]));
   }
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan