Mails lokal versenden

firstlord18

Erfahrenes Mitglied
Hallo,

ist es möglich, Mails auf xmapp zu versenden?

Habe keine Lust, immer meine Scripte auf den Serrver hochzuladen, nur um meine Mailscripte zu testen ;).

Danke im voraus!
 
Ist doch kein Problem:

Mailserver installieren und schon kannst du dir im LAN E-Mails schicken.
Für Mailserver & Co. bitte im Webmaster-Forum fragen.
 
geht das dann nur im LAN oder auch ins Internet. Gibt es keine schnelöler Lösung, weil ich nicht wirklich weiß, was ich da alles einrichtn muss.
Eventuell gibt es die möglichkeit, den SMTP Server von web.de zu nutzten?
 
du kannst es auch ganz anders machen:

Ein Pseudo-Mailer

Du schreibst dir eine Funktion namens email
diese trägt die E-Mails in eine DB ein

Dann tauscht du in allen File den mail-Befehl gegen deine Funktion aus.
Wenn alles so läuft wie du willst, dann machst du wieder den richtigen Mailbefehl rein...
 
eMails mit Anhaengen erstellen:
PHP:
<?php
class email
{
	private $from;
	private $to;
	private $cc;
	private $bcc;
	private $subject;
	private $body;
	private $useragent;
	private $attachedfiles;

	public function __construct($from,$to,$subject,$body,$cc="",$bcc="",$useragent="PHP/ReptilerMailClass")
	{
		$this->from=$from;
		$this->to=$to;
		$this->subject=$subject;
		$this->body=$body;
		$this->cc=$cc;
		$this->bcc=$bcc;
		$this->useragent=$useragent;
		$this->attachedfiles=array();
	}

	public function addattachment($filename)
	{
		$this->attachedfiles[]=$filename;
	}

	public function composemail()
	{
		if (count($this->attachedfiles)>0)
			{
				$boundary='----'.md5(uniqid());
			}
		$mail='To: '.$this->to."\r\n";
		$mail.='Subject: '.$this->subject."\r\n";
		$mail.="Content-class: urn:content-classes: message\r\n";
		$mail.='User-Agent: '.$this->useragent."\r\n";
		$mail.="MIME-Version: 1.0\r\n";
		if (count($this->attachedfiles)>0)
			{
				$mail.="Content-Type: multipart/mixed;\r\n\tboundary=\"".$boundary."\"\r\n";
			}
		$mail.='From: '.$this->from."\r\n";
		if (!empty($this->cc))
			{
				$mail.='Cc: '.$this->cc."\r\n";
			}
		if (!empty($this->bcc))
			{
				$mail.='Bcc: '.$this->bcc."\r\n";
			}
		$mail.="X-Priority: 3 (Normal)\r\n";
		$mail.="Importance: Normal\r\n";
		if (count($this->attachedfiles)>0)
			{
				$mail.="\r\n--".$boundary."\r\n";
			}
		$mail.="Content-Type: text/plain;\r\n\tcharset=\"iso-8859-1\"\r\n";
		$mail.="Content-Transfer-Encoding: quoted-printable\r\n";
		$mail.="Content-Disposition: inline\r\n\r\n";
		$mail.=imap_8bit($this->body)."\r\n\r\n";
		if (count($this->attachedfiles)>0)
			{
				for ($x=0;$x<count($this->attachedfiles);$x++)
					{
						$mail.="\r\n\r\n--".$boundary."\r\n";
						$filename=explode('/',$this->attachedfiles[$x]);
						$filename=$filename[count($filename)-1];
						$file=fopen($this->attachedfiles[$x],"r");
						$content=fread($file,filesize($this->attachedfiles[$x]));
						fclose($file);
						$encodedfile=chunk_split(base64_encode($content));
						$mail.="Content-Type: application/octet-stream;\r\n\tname=\"".$filename."\"\r\n";
						$mail.="Content-Transfer-Encoding: base64\r\n";
						$mail.='Content-Description: '.$filename."\r\n";
						$mail.="Content-Disposition: attachment;\r\n\tfilename=\"".$filename."\"\r\n\r\n";
						$mail.=$encodedfile;
					}
				$mail.="\r\n\r\n--".$boundary."--";
			}
		return $mail;
	}
}
?>
eMails ueber einen beliebigen Server verschicken (bisher ohne Anmeldung):
PHP:
<?php
class smtpconnection
{
	private $host;

	public function __construct($host)
	{
		$this->host=$host;
	}

	public function sendmail($mail)
	{
		$connection=@fsockopen($this->host,25);
		if ($connection==false)
			{
				return false;
			}
		stream_set_timeout($connection,0,50000);
		fgets($connection);
		fwrite($connection,'EHLO '.$_SERVER['SERVER_NAME']."\r\n");
		$response=fgets($connection);
		if (substr($response,0,1)!=2)
			{
				fclose($connection);
				return false;
			}
		while (fgets($connection)!=false)
			{
			}
		$startpos=strpos($mail,"From: ")+6;
		$endpos=strpos($mail,"\r\n",$startpos);
		$from=substr($mail,$startpos,$endpos-$startpos);
		$startpos=strpos($mail,"To: ")+4;
		$endpos=strpos($mail,"\r\n",$startpos);
		$to=substr($mail,$startpos,$endpos-$startpos);
		$size=strlen($mail);
		fwrite($connection,'MAIL FROM:<'.$from.'> SIZE='.$size."\r\n");
		$response=fgets($connection);
		if (substr($response,0,1)!=2)
			{
				fclose($connection);
				return false;
			}
		fwrite($connection,'RCPT TO:<'.$to.">\r\n");
		$response=fgets($connection);
		if (substr($response,0,1)!=2)
			{
				fclose($connection);
				return false;
			}
		fwrite($connection,"DATA\r\n");
		$response=fgets($connection);
		if (substr($response,0,1)!=3)
			{
				fclose($connection);
				return false;
			}
		fwrite($connection,$mail."\r\n.\r\n");
		$response=fgets($connection);
		if (substr($response,0,1)!=2)
			{
				fclose($connection);
				return false;
			}
		fwrite($connection,"QUIT\r\n");
		fgets($connection);
		fclose($connection);
		return true;
	}
}
?>

Uebrigens, der Parameter $mail der Funktion sendmail() erwartet die Roh-eMail, mit allen Headern und allem drum und dran. Eben genau so wie die obere Klasse sie zurueckgibt.
 
Zurück