Nicht mehr ganz neu hier
Hallo,
ich habe ein kleines Problem mit dem Versenden von Anhängen in E-Mail Nachrichten. Mein erstes Problem ist, dass ich mich das erste mal damit beschäftige und dementsprechend noch nicht so viel Ahnung von der Materie habe, das andere Problem ist, dass ich es zwar geschafft habe eine E-Mail mit Anhang zu verschicken, dabei aber sämtlicher Inhalt der Email verloren geht (Es wird also kein Text verschickt)
Hier einmal der Quelltext:
Und hier die dazugehörige Klasse (selbst entwickelt):
Wie gesagt, die Email wird gesendet und auch der Anhang kommt korrekt an, nur der Text fehlt, wenn ich den Anhang entferne wird alles korrekt übertragen, auch HTML Mails sind dann kein Problem.
Hoffe einer von euch hat da eine Ahnung, woran das liegen könnte, ist aber auch echt ein Gewusel mit den ganzen Kopfdaten einer Email oO
MfG
MrManko
ich habe ein kleines Problem mit dem Versenden von Anhängen in E-Mail Nachrichten. Mein erstes Problem ist, dass ich mich das erste mal damit beschäftige und dementsprechend noch nicht so viel Ahnung von der Materie habe, das andere Problem ist, dass ich es zwar geschafft habe eine E-Mail mit Anhang zu verschicken, dabei aber sämtlicher Inhalt der Email verloren geht (Es wird also kein Text verschickt)
Hier einmal der Quelltext:
PHP:
require_once 'classes/email.class.php';
$attachment = array();
$attachment[] = "test.pdf";
$mail = new mail("empfaenger@server.tld", "no-reply@absender.tld", "Ihre Online Rechnung", "Vllt klappt wenigstens das", false, $attachment);
if($mail->send_mail()) {
echo "Mail ist verschickt";
} else {
echo "Mail konnte nicht verschickt werden";
}
PHP:
class mail {
private $to;
private $from;
private $subject;
private $text;
private $html = false;
private $attachments = array();
private $header;
private $eol;
public function __construct($to, $from, $subject, $text, $html = false, $attachment = array()) {
if (strtoupper(substr(PHP_OS,0,3) == 'WIN')) {
$this->eol = "\r\n";
} elseif (strtoupper(substr(PHP_OS,0,3) == 'MAC')) {
$this->eol = "\r";
} else {
$this->eol = "\n";
}
$this->to = $to;
$this->from = $from;
$this->subject = $subject;
$this->text = $text;
$this->create_common_headers();
$this->set_html($html);
$this->set_attachments($attachment);
}
private function set_html($html) {
if($html != false) {
if(is_bool($html)) {
$this->add_html();
} else {
die("Parameter muss vom Typ Boolean sein");
}
}
}
private function set_attachments($attachments) {
if(is_array($attachments)) {
if(count($attachments) > 0) {
$this->attachments = $attachments;
$this->add_attachments();
}
} else {
die("Es muss ein Array übergeben werden");
}
}
public function send_mail() {
if(mail($this->to, $this->subject, $this->text, $this->header)) {
return true;
} else {
return false;
}
/*echo "<pre>";
echo $this->header;
echo "</pre>";*/
}
private function create_common_headers() {
$this->header .= "From: ".$this->from.$this->eol;
$this->header .= "Reply-To: ".$this->from.$this->eol;
$this->header .= "Return-Path: ".$this->from.$this->eol;
$this->header .= "X-Mailer: PHP v".phpversion().$this->eol;
$this->header .= 'MIME-Version: 1.0'.$this->eol;
}
private function add_attachments() {
foreach($this->attachments as $value) {
$f_name = $value;
$handle = fopen($f_name, 'rb');
$f_contents = fread($handle, filesize($f_name));
$f_contents = chunk_split(base64_encode($f_contents));
$f_type = filetype($f_name);
fclose($handle);
$this->header .= "Content-Type: application/pdf; name=\"".$value."\"".$this->eol;
$this->header .= "Content-Transfer-Encoding: base64".$this->eol;
$this->header .= "Content-Disposition: attachment; filename=\"".$value."\"".$this->eol.$this->eol; // !!Hier zweimal EOL !! GAAAANZ WICHTIG !!
$this->header .= $f_contents.$this->eol.$this->eol;
}
}
private function add_html() {
$this->header .= "Content-Type: text/html; charset=iso-8859-1".$this->eol;
$this->header .= "Content-Transfer-Encoding: 8bit".$this->eol;
}
}
Hoffe einer von euch hat da eine Ahnung, woran das liegen könnte, ist aber auch echt ein Gewusel mit den ganzen Kopfdaten einer Email oO
MfG
MrManko