Ik heb een script waarmee ik een zip bestand van een backup naar mezelf wil sturen. Het zip bestand is oke voor de verzending maar bij aankomst zit er geen data mee in. Waarschijnlijk iets met de instellingen maar ik kom er niet uit.
Peter
<?PHP
$fileatt_name="backup.zip";
$fileatt_type = "application/octet-stream";

$file = fopen($filedir,'rb');
$data = fread($file,filesize($filedir));
fclose($file);

$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";

$email_message .= "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_message . "\n\n";

$data = chunk_split(base64_encode($data));

$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";

$ok = @mail($email_to, $email_subject, $email_message, $headers);

if($ok) {
echo "<font face=verdana size=2>Verzonden!</font>";
} else {
die("Niet verzonden");
}
?>
Peter van Kroonenburg op 10/01/2017 21:00:23

Dank voor alle info.
Peter

Wat betekent dat? Zijn de problemen opgelost? Wat was de oplossing? Of heb je gekozen voor een andere aanpak (bijvoorbeeld PHPMailer)?

Let er wel op dat je de nieuwste versie gebruikt, dit vanwege een veiligheidslek in eerdere versies.
Het blijft toch een probleem om het werkend te krijgen. Ik heb PHPmailer geinstalleerd. Alle variabelen ingesteld en ja, het werkt lokaal. Bijlage wordt keurig meegezonden.
De zaak geupload naar HOSTNET.
Ik krijg daar nu onderstaande foutmelding;
Message could not be sent.Mailer Error: SMTP connect() https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Op de betreffende site gezocht maar kom er niet uit ;(.


<?php
require '../PHPMailer-master/PHPMailerAutoload.php';
$username="[email protected]";
$password='******';
$from="[email protected]";
$name="peter";
$email="[email protected]";
$subject="test";
$message="inhoud";
$to="[email protected]";
$att="../backupdata_zip/backup_6.zip";
		
$mail = new PHPMailer;
$mail->isSMTP();/*Set mailer to use SMTP*/
$mail->Host = 'smtp.gmail.com';/*Specify main and backup SMTP servers*/
$mail->Port = 587;
$mail->SMTPAuth = true;/*Enable SMTP authentication*/
$mail->Username = $username;/*SMTP username*/
$mail->Password = $password;/*SMTP password*/
$mail->SMTPSecure = 'tls';*//*Enable encryption, 'ssl' also accepted*/
$mail->From = $from;
$mail->FromName = $name;
$mail->addAddress($to, 'Recipients Name');/*Add a recipient*/
$mail->addReplyTo($email, $name);
/*$mail->addCC('[email protected]');*/
/*$mail->addBCC('[email protected]');*/
$mail->WordWrap = 70;/*DEFAULT = Set word wrap to 50 characters*/
$mail->addAttachment($att);/*Add attachments*/
$mail->isHTML(false);/*Set email format to HTML (default = true)*/
$mail->Subject = $subject;
$mail->Body    = $message;
$mail->AltBody = $message;
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
//} else {
   // header("Location: ../php/start.php");
}
?>


Je zou nauwkeuriger kunnen kijken naar wat er misgaat door debugging aan te zetten:
$mail->SMTPDebug = 3; // verbose

EDIT: het commentaar op regel 20 ziet er niet ok uit, er staat een asterisk na de puntkomma.

EDIT: wild guess: je host staat het gebruik van sockets niet toe.
Zet je debugging eens aan?

$mail->SMTPDebug = 1;
Ik gok op een firewall-issue. Wat zegt je hosting?
Regel 14 t/m 20 uitschakelen. Dan moet je via sendmail op hun server zelf kunnen mailen.
Wel vreemd dat ze SMTP niet toestaan, ik zou het zelf appreciëren als ze dat wel deden.

Reageren