Zum Inhalt springen

mail() header


Empfohlene Beiträge

Hallo:)

Die Hennen rennen mal wieder im Kreis.

Über nen däftigen Stoß auf den Hinterkopf hät ich nichts einzuwenden.

Ich schreib atm an nem Mailscript das nicht richtig laufen will. Lustig find ich das ich im internen Netz Mails damit verschicken kann, aber alles was raus soll geblockt wird. Mein Provider ist Strato und dessen SMTP hab ich auch der INI eingetragen (post.strato.de)


Warning: mail() [function.mail]: Failed to connect to mailserver at "post.strato.de" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in ...

Warning: mail() [function.mail]: SMTP server response: 501 5.1.7 Error parsing address: < in ... [/PHP]

Die stark abgespeckt Version des Scripts mit jedem "header" den ich schon ausprobiert hab:

[PHP]
function mailTo($empfaenger, $betreff, $name, $absender, $text)
{
// __Übernahme von Parametern__
$newEmpfaenger = trim($empfaenger);
$newBetreff = trim($betreff);
$newName = trim($name);
$newAbsender = trim($absender);
$newText = trim($text);

// Header zusammenbasteln
//$header = "FROM: $newName <$newAbsender>\r\n";
//$header = "FROM: ".$newName." <".$newAbsender.">\r\n";
//$header .= "From: \"".$newAbsender."\"\n";
$header .= "Content-Type: text/html\r\n";
$header .= "Content-Transfer-Encoding: 8bit\r\n";

// Briefkopf
$kopf = "<table><tr>\n";
$kopf .= "<td>Datum: ".date('j.n.Y')."</td>\n";
$kopf .= "<td style='padding-left: 10px;'>Von: $absender</td>\n";
$kopf .= "</tr><tr>\n";
$kopf .= "<td>Uhrzeit: ".date('H:i')."</td>\n";
$kopf .= "<td style='padding-left: 10px;'>An: $empfaenger</td>\n";
$kopf .= "</tr></table>\n";

$brief = $kopf.$umbruch.$newText.$umbruch.$umbruch.$footer;

mail($newEmpfaenger, $newBetreff, $brief, $header)
}
mailTo("blub@moep.de", "Ein Betreff", "Mein Name", "MeineEmail", "balla bla la hallo");

Fällt einem was auf ...vllt der Fehler? *gg*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Fällt einem was auf ...vllt der Fehler? *gg*

Deinem HTML-Inhalt fehlt der DTD und allgemein das HTML-Grundgerüst. ;)

Auf was für einem System läuft das Skript? \r\n ist nur bei Windows + Novell als Zeilenumbruch ok, ein unixoides System benutzt \r als Zeilenumbruch.

Das wär z.B. ein Punkt. Ansonsten zeig mal eine "fertige" Mail deines Skripts, also:


$EOL = "\r\n";
...
echo $header.$EOL.$EOL.$brief;

[/php]

Das ist dann das, was der SMTP-Server bekommt und verarbeitet (+ Subject und Empfänger im Header).

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke, noch bekomm ich aber den selben fehler.

hab`s um folgendes erweitert:


if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
$eol="\r\n";
} elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
$eol="\r";
} else {
$eol="\n";
}


// Header zusammenbasteln
$header = "FROM: $newName <$newAbsender>.$eol";
//$header = "FROM: ".$newName." <".$newAbsender.">".$eol;
//$header .= "From: \"".$newAbsender."\"".$eol;
$header .= "Content-Type: text/html".$eol;
$header .= "Content-Transfer-Encoding: 8bit".$eol;

// Briefkopf
$kopf = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>".$eol;
$kopf .= "<html>".$eol;
$kopf .= "<head>irgendwas</head>".$eol;
$kopf .= "<body>".$eol;
$kopf .= "<table><tr>".$eol;
$kopf .= "<td>Datum: ".date('j.n.Y')."</td>".$eol; ;
$kopf .= "<td style='padding-left: 10px;'>Von: $absender</td>".$eol;
$kopf .= "</tr><tr>".$eol;
$kopf .= "<td>Uhrzeit: ".date('H:i')."</td>".$eol;
$kopf .= "<td style='padding-left: 10px;'>An: $empfaenger</td>".$eol;
$kopf .= "</tr></table>\n";

$brief = $kopf.$eol.$newText.$eol.$eol.$footer;
$blub = mail($newEmpfaenger, $newBetreff, $brief, $header);
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und wie sieht die Mail jetzt komplett aus, als Text?

Und soweit ich weiß wird bei Linux \r benutzt, nicht \n... oder verwechsel ich das? Ich hab AFAIR immer \r benutzt.

EDIT:

Ach ja, wenn du hier im Forum suchst, findest du bestimmt den ein oder anderen Beitrag von mir, wo ich genau erklärt hab wie so eine Mail aussehen musst und aufgebaut sein muss. Bei mir funktioniert die Suche im Moment aber nicht, keine Ahnung woran das liegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warning: mail() [function.mail]: Failed to connect to mailserver at "post.strato.de" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in ...

Warning: mail() [function.mail]: SMTP server response: 501 5.1.7 Error parsing address: < in ...

ich rate jetzt wieder einmal und versuche, bei drei treffern zumindest einen zu versenken:

- post.strato.de nimmt mails nur nach SMTP-after-POP (oder bei vorheriger korrekt stattgefundener authentifizierung) an.

- post.strato.de nimmt von deinem host, auf dem PHP läuft, aus anderern unerfindlichen gründen, keine mails an.

- SMTP 501 weist auf eine nicht korrekte angabe der mailadresse, wahlweise der "from" oder der "to" hin; verursacht wird das möglicherweise durch fehlende ober überschüssige zeichen wie <, >, @ und anführungszeichen (").

wie JesterDay schon gemeint hat, poste bitte mal den kompletten inhalt des SMTP-envelopes.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das hier ist die Beschreibung der Mail Funktion:


function mail(
string $to,
string $subject,
string $message,
string[optional] $additional_headers,
string[optional] $additional_parameters)
[/PHP]

Um also zu prüfen ob der Mail Server überhaupt korrekt eingerichtet ist, schreibe eine kurze Datei mit diesem Inhalt:

[PHP]
<?
mail("deinemail@deinprovider.de","Das ist ein Test","Kuckuck, da bin ich");
?>

Kommt auch da ein Fehler, so ist Dein Mail Server nicht korrekt eingerichtet.

Entsprechendes verrät Dir der Aufruf von phpinfo();

Poste mal den Link zu einer Datei die den Aufruf "phpinfo();" enthält... Dann kann Dir geholfen werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

was versteht man unter "sendmail_path"?

sendmail_path string

Pfad, in dem sich das sendmail-Programm befindet, z.B. /usr/sbin/sendmail oder /usr/lib/sendmail. configure versucht, die richtige Position automatisch zu finden. Falls die automatische Erkennung aber fehlschlägt und der Standardwert auf Ihrem Rechner falsch ist, dann können Sie hier den richtigen Pfad setzen.

Falls Sie auf Ihrem Rechner sendmail nicht benutzen, müssen Sie den Pfad angeben, in sich der sendmail-Wrapper/-Ersatz befindet, sofern vorhanden. Zum Beispiel können » Qmail-Benutzer diese Option auf /var/qmail/bin/sendmail oder /var/qmail/bin/qmail-inject setzen.

qmail-inject benötigt keine Optionen, um Mails korrekt zu verarbeiten.

Diese Option funktioniert auch unter Windows. Wenn Sie gesetzt ist, werden smtp, smtp_port und sendmail_from ignoriert und das angegebene Kommando wird ausgeführt.

Hier werden sie geholfen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...