Ich versuche, HTML-E-Mails mit Anhängen von Opencart zu senden. Es gibt eine eingebaute Funktion $mail->addAttachment
. Alles ist in Ordnung, außer dass an der Stelle des Anhangs eine weiße Box in Apple Mail steht. In der iOs Mail App wird der Anhang überhaupt nicht angezeigt. Auf GMail ist es ok:Apple Mail zeigt keine Anlagen korrekt aus PHP
Die Befestigung in Apple Mail zu Verfügung steht, denn wenn ich auf die weiße Fläche klicken verdoppeln, wird die Anlage geöffnet wird.
Hier ist die Quelle der Nachricht ist, geöffnet in GMail (I entfernt X Header):
X-Mailer: PHP/5.4.39-0+deb7u2
Content-Type: multipart/related; boundary="----=_NextPart_fefb9509ef8523a96a17066ecf8472c8"
------=_NextPart_fefb9509ef8523a96a17066ecf8472c8
Content-Type: multipart/alternative; boundary="----=_NextPart_fefb9509ef8523a96a17066ecf8472c8_alt"
------=_NextPart_fefb9509ef8523a96a17066ecf8472c8_alt
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Some text (text/plain)
------=_NextPart_fefb9509ef8523a96a17066ecf8472c8_alt
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test title</title>
</head>
<body>
<p>Some html text(text/html)</p>
</body>
</html>
------=_NextPart_fefb9509ef8523a96a17066ecf8472c8_alt--
------=_NextPart_fefb9509ef8523a96a17066ecf8472c8
Content-Type: application/pdf; name="form.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="form.pdf"
Content-ID <%2Fhome%2Fhtml%2Fdownload%2form.pdf>
X-Attachment-Id: %2Fhome%2Fhtml%2Fdownload%2form.pdf
JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G
bGF0ZURlY29kZSA+PgpzdHJlYW0KeAGdW0tzHLcRvs+vQGInGbqk0bwfuTl2qqKkbMkRk1Q58mFJ
jkJylzvS7pIu8Q/o5oMuLlfpmB+Un5SvHwDmtdylSyXNAgM0uhuN7q8bo3fmO/POxPhTNIWp89Rs
WvMvszbPvtom5nxrEv6zPccIenvjxq34V2xWPHsVXJo3TCtLoiYr49ykdZQVpsjqqKqqxlR1GWWW
+jtQpUUTk5WmKjNzfmP+dGr+fAoStHKAlel9bLCyH1ympspqHRxHcRwn5vTcJDkP1cfpjXl2ekp8
...
------=_NextPart_fefb9509ef8523a96a17066ecf8472c8--
relevanten Teil von /system/library/mail.php:
foreach ($this->attachments as $attachment) {
if (file_exists($attachment)) {
$handle = fopen($attachment, 'r');
$content = fread($handle, filesize($attachment));
fclose($handle);
$message .= '--' . $boundary . $this->newline;
$message .= 'Content-Type: application/pdf; name="' . basename($attachment) . '"' . $this->newline;
$message .= 'Content-Transfer-Encoding: base64' . $this->newline;
$message .= 'Content-Disposition: attachment; filename="' . basename($attachment) . '"' . $this->newline;
$message .= 'Content-ID: <' . basename(urlencode($attachment)) . '>' . $this->newline;
$message .= 'X-Attachment-Id: ' . basename(urlencode($attachment)) . $this->newline . $this->newline;
$message .= chunk_split(base64_encode($content));
}
}
EDIT :
ich habe erkannt, dass Content-ID und X-Geschiebe-Id das Problem war:
basename(urlencode($attachment)
sollte sein:
urlencode(basename($attachment))
Es funktioniert jetzt in Apple Mail in Ordnung, aber die Bindung fehlt noch auf iOS (iPhone/iPad). Irgendeine Idee?
wenn es etwas in Ihrem „Quelle“ Code, die relevant sein könnten, sollten Sie veröffentliche es. Sie haben als PHP, aber keinen "Code", um die Frage zu unterstützen. Wenn Sie HTML/JS usw. teilen möchten, dann veröffentlichen Sie es. Es könnte helfen, Dinge zu beschleunigen. –
stellen Sie sicher, dass '$ message' tatsächlich definiert ist und wenn Sie keine öffnung' $ message = "Something" haben; 'dann müssen Sie vielleicht den ersten Punkt in' $ message. = '-' loswerden. $ Grenze. $ this-> newline; '. Über Fehlerberichte auf Fehler prüfen, kann es helfen. –