---
title: "Skicka mail via smtp server med pop before smtp påslaget"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/100853-skicka-mail-via-smtp-server-med-pop-before-smtp-påslaget"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "mify"
published: "2004-04-03T13:12:51.000Z"
updated: "2004-04-04T13:30:32.000Z"
replies: 4
views: 369
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/100853-skicka-mail-via-smtp-server-med-pop-before-smtp-påslaget"
---

# Skicka mail via smtp server med pop before smtp påslaget

## #1 — mify, 2004-04-03T13:12Z

Finns det någon smidig lösning på detta ? 

Om jag förstått rätt när jag letat runt på nätet så funkar det inte att köra med vanliga mail() när man måste verifiera sig på smtp server innan man får skicka. 

Jag ska hade till ett formulär där jag lägger in ny användare och när jag klickar spara så vill jag att det ska gå iväg ett mail till den angivna mailadressen med en länk i för att aktivera kontot.Men jag vet inte hur jag ska få iväg mailet 

// Micke

Permalänk: https://www.webforum.nu/p/100853

## #2 — monAmour, 2004-04-04T08:54Z

Du får ansluta till FTP servern med hjälp av sockets. Kolla sockets funktionerna på PHP.net

Permalänk: https://www.webforum.nu/p/1313973

## #3 — mify, 2004-04-04T12:59Z

Så här löste jag det, hittade en smtp class att använda mig av som ser ut så här 

\<?php 
/\*\* 
\* Filename smtp.class.inc 
\* Class: smtp.class.inc 
\* Require: 
\* Optional: 
\* Beschreibung: A Class to send an E-Mail via SMTP and/or generate header 
\* Erstellt: 21. März 2003, 18:49:36 
\* Letzte Änderung: 29. März 2003, 01:38:00 
\* Author: Jointy \<hempcluster@gmx.net\> 
\* Copyright: @GPL Jointy 
\* Version: 1.00 (final) 
\* 
\* ///////////////////////////////////////////////////////////////////////////// 
\* ///////////////////////////////////////////////////////////////////////////// 
\* SMTP Variablen 
\* 
\* $smtp_server - Smtp Server Address 
\* optional: 
\* $smtp_user - Smtp Login User 
\* $smtp_pass - Smtp User Login Password 
\* 
\* ///////////////////////////////////////////////////////////////////////////// 
\* 
\* 
\* ///////////////////////////////////////////////////////////////////////////// 
\* Funktion Variablen 
\* 
\* function make_header($from, $mailto, $subject, $priority="3", $cc="", $bcc="", $gen_message_id="Y") 
\* 
\* $from - Sender Address (z.B. <mustermann@web.de> ) 
\* $mailto - To: Address (z.B. String(",") or Array ( 0 =\> <mustermann@gmx.net>; 
\* 1 =\> <hello@gmx.net>; ) 
\* $subject - E-Mail SubjectLine (string) 
\* 
\* optional: 
\* $priority - E-Mail Priority (default = "3") 
\* $cc && $bcc - CC and BCC Address (howto $mailto) 
\* $gen_message_id - (Y) Message-Id is generatet by function, (N) Message-Id must generate by your self or by SMTP-Server 
\* 
\* 
\* 
\* function &smtp_send($from, $mailto, $header, $message="", $cc=null, $bcc=null) 
\* $from - Sender Address (z.B. <mustermann@web.de> ) 
\* $mailto - To: Addressen (z.B. String(",") or Array ( 0 =\> <mustermann@gmx.net>; 
\* 1 =\> <hello@gmx.net>; ) 
\* $header - E-Mail Header generate by "make_header" or you make your own header 
\* optional: 
\* $message - Message Text 
\* $cc && $bcc - howto $mailto 
\* 
\* 
\* ///////////////////////////////////////////////////////////////////////////// 
\* ///////////////////////////////////////////////////////////////////////////// 
\*\*/ 

if (!isset($\_SMTP_CLASS_INC)){ 
$\_SMTP_CLASS_INC = 1; 
class SMTP { 

// SMTP-Server Vars !!! // 
var $smtp_server=""; 
var $smtp_user="null"; 
var $smtp_pass="null"; 

//Header Var !! // 
var $header=""; 

// Socket Var !! // 
var $smtp_socket; 

// Fehler Var !! // 
var $error="E-Mail skickat."; 

function SMTP($smtp_server,$smtp_user="",$smtp_pass=""){ 
if(!trim($smtp_server)){ 
$this-\>smtp_server=""; 
} 
$this-\>smtp_server= trim($smtp_server); 
if($smtp_user!="" && $smtp_pass!=""){ 
$this-\>smtp_user= trim($smtp_user); 
$this-\>smtp_pass= trim($smtp_pass); 
} 

} 

function &smtp_put($string){ 
return fputs($this-\>smtp_socket, $string . "\\r\\n"); 
} 

/\* 
The function make_header() 

\*/ 
function &make_header($from, $mailto, $subject, $priority="3", $cc="", $bcc="", $gen_message_id="Y"){ 

if (!preg_match( '/.+@.+/',$from)){ 
return $this-\>error="Sender Address is incorrekt"; 
} 

// Message-ID: The message ID consists of Date+Time.Random.SenderAddress !!! 
if($gen_message_id=="Y"){ 

$this-\>header = "Message-Id: \<". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."\> \\r\\n"; 
} 

//From: Address 
$this-\>header .="From: \<" . $from . "\> \\r\\n"; 

// To: Address 
if(!is_array($mailto)){ 
$mailto=explode(",",$mailto); 
} 

while(list(,$mailto_address) = each( $mailto )){ 

if($mailto_address!=""){ 
$mailto_address=trim($mailto_address); 
if(!preg_match( '/.+@.+/',$mailto_address)){ 
return $this-\>error = "This To: Address is incorrekt. Error: ".$mailto_address; 
} 
} 
unset($mailto_address); 
} 
$mailto=implode(",",$mailto); 
$this-\>header .="To: \<".$mailto."\> \\r\\n"; 

// Subject: 
$this-\>header .="Subject: ".$subject." \\r\\n"; 

//Date: Standard Mail Format (z.B Sat, 22 Mar 2003 22:57:05 +0100 ) !! 
$this-\>header .="Date: ". date('D, d M Y H:i:s O') ." \\r\\n"; 

// Check isset CC and/or BCC and check is it in right RFC format 
if($cc!=""){ 
if(!is_array($cc)){ 
$cc=explode(",",$cc); 
} 

while(list(,$cc_address) = each ( $cc )){ 
if($cc_address!=""){ 
$cc_address = trim($cc_address); 
if(!preg_match( '/.+@.+/',$cc_address)){ 
return $this-\>error="This CC Address is in correkt. Error: ".$cc_address; 
} 
} 
unset($cc_address); 
} 

$cc=implode(",",$cc); 
$this-\>header .= "CC: ".$cc." \\r\\n"; 
} 

if($bcc!=""){ 
if(!is_array($bcc)){ 
$bcc=explode(",",$bcc); 
} 

while(list(,$bcc_address) = each ( $bcc )){ 
if($bcc_address!=""){ 
$bcc_address = trim($bcc_address); 
if(!preg_match( '/.+@.+/',$bcc_address)){ 
return $this-\>error="This BCC Address is incorrekt. Error: ".$bcc_address; 
} 
} 
unset($bcc_address); 
} 
$bcc=implode(",",$bcc); 
$this-\>header .= "BCC: ".$bcc." \\r\\n"; 
} 

// Set Priority default="3"!!! 
if($priority!="3"){ 
$this-\>header .= "X-Priority: ".$priority." \\r\\n"; 
if($priority=="1" \|\| $priority=="2"){ 
$this-\>header .= "X-MSMail-Priority: High \\r\\n"; 
} 
if($priority=="4" \|\| $priority=="5"){ 
$this-\>header .= "X-MSMail-Priority: Low \\r\\n"; 
} 
} 

return $this-\>header; 

} 

function &server_parse( $response ) 
{ 
$server_response = ""; 
while ( substr( $server_response, 3, 1 ) != ' ') 
if ( !( $server_response = fgets($this-\>smtp_socket))) 
return $this-\>error = "Couldn't read Server Response Code !!"; 
if ( substr( $server_response, 0, 3 ) != $response ) 
return $this-\>error = "Couldn't send E-Mail. Server Response: \\" $server_response \\" !!!"; 
return ""; 
} 

/\* 
Funktion smtp_send() 
\*/ 
function &smtp_send($from, $mailto, $header, $message="", $cc="", $bcc=""){ 

if($this-\>smtp_server=="") return $this-\>error = "Without SMTP Server you can't send an e-mail  !! "; 

if($message!=""){ 
$message = preg_replace( "/(?\<!\\r)\\n/si", "\\r\\n",$message); 
} 

if(!$this-\>smtp_socket=fsockopen($this-\>smtp_server, 25, $errno, $errstr, 30)) 
return $this-\>error="Couldn't connect to Smtp Server ($this-\>smtp_server) $errno : $errstr !!"; 

if($this-\>server_parse("220")){ 
return $this-\>error; 
} 
if(!$this-\>smtp_put("EHLO $this-\>smtp_server")){ 
return $this-\>error="Couldn't send EHLO Command !! "; 
} 
if($this-\>server_parse("250")){ 
return $this-\>error; 
} 
if(!empty($this-\>smtp_user) && !empty($this-\>smtp_pass)){ 

if(!$this-\>smtp_put("AUTH LOGIN")){ 
return $this-\>error =" Couldn't send \\"AUTH LOGIN \\" Command !!"; 
} 
if($this-\>server_parse("334")){ 
return $this-\>error; 
} 
if(!$this-\>smtp_put(base64_encode($this-\>smtp_user))){ 
return $this-\>error="Couldn't send LOGIN USER !!"; 
} 
if($this-\>server_parse("334")){ 
return $this-\>error; 
} 
if(!$this-\>smtp_put(base64_encode($this-\>smtp_pass))){ 
return $this-\>error="Couldn't send USER PASSWORD !!"; 
} 
if($this-\>server_parse("235")){ 
return $this-\>error; 
} 
} 
if(!$this-\>smtp_put("MAIL FROM: ".$from)){ 
return $this-\>error="Couldn't send \\" MAIL FROM: $from \\" !!"; 
} 
if($this-\>server_parse("250")){ 
return $this-\>error; 
} 

if(!is_array($mailto)){ 
$mailto=explode(",",$mailto); 
} 
while(list(,$mailto_address) = each( $mailto )){ 
if($mailto_address!=""){ 
if(!preg_match( '/.+@.+/',$mailto_address)){ 
return $this-\>error = "This To: Address is in correkt. Error: ".$mailto_address; 
} 
if(!$this-\>smtp_put("RCPT TO: $mailto_address")){ 
return $this-\>error = "Couldn't send \\" RCPT TO: $mailto_address \\" !!"; 
} 
if($this-\>server_parse("250")){ 
return $this-\>error; 
} 
} 
unset($mailto_address); 
} 

if($cc!=""){ 
if(!is_array($cc)){ 
$cc=explode(",",$cc); 
} 

while(list(,$cc_address) = each ( $cc )){ 
if($cc_address!=""){ 
$cc_address=trim($cc_address); 
if(!preg_match( '/.+@.+/',$cc_address)){ 
return $this-\>error="This CC Address is in correkt. Error: ".$cc_address; 
} 
if(!$this-\>smtp_put("RCPT TO: $cc_address")){ 
return $this-\>error = "Couldn't send \\" RCPT TO: $cc_address \\" !!"; 
} 
if($this-\>server_parse("250")){ 
return $this-\>error; 
} 
} 
} 
unset($cc_address); 
} 

if($bcc!=""){ 
if(!is_array($bcc)){ 
$bcc=explode(",",$bcc); 
} 

while(list(,$bcc_address) = each ( $bcc )){ 
if($bcc_address!=""){ 
$bcc_address=trim($bcc_address); 
if(!preg_match( '/.+@.+/',$bcc_address)){ 
return $this-\>error="This BCC Address is in correkt. Error: ".$bcc_address; 
} 
if(!$this-\>smtp_put("RCPT TO: $bcc_address")){ 
return $this-\>error = "Couldn't send \\" RCPT TO: $bcc_address \\" !!"; 
} 
if($this-\>server_parse("250")){ 
return $this-\>error; 
} 
} 
} 
unset($bcc_address); 
} 

if(!$this-\>smtp_put("DATA")){ 
return $this-\>error="Couldn't send \\" DATA \\" Command !!"; 
} 
if($this-\>server_parse("354")){ 
return $this-\>error; 
} 
if(!$this-\>smtp_put("$header")){ 
return $this-\>error="Couldn't send Header !!"; 
} 
$this-\>smtp_put("\\r\\n"); 

if(!$this-\>smtp_put("$message")){ 
return $this-\>error="Couldn't send Mail !!"; 
} 
$this-\>smtp_put("."); 
if($this-\>server_parse("250")){ 
return $this-\>error; 
} 
$this-\>smtp_put("QUIT"); 
fclose($this-\>smtp_socket); 

return $this-\>error; 

} 

} 
} 

?\> 

Och sen skrev jag denna fil som anropar classen

Permalänk: https://www.webforum.nu/p/1314041

## #4 — mify, 2004-04-04T13:00Z

\<?php 

/\* 
maila.php Use to send mime mail through a smtp server use with smtp.class.inc 
Created 2004-04-04 Micke Fyhr 
Version 1.0 

Variables to change 

\* ///////////////////////////////////////////////////////////////////////////// 
\* SMTP Variables 
\* 
\* $smtp_server - Smtp Server Address i.e $smtp_server="smtpserver"; 
\* $smtp_user - Smtp Login User i.e $smtp_user="user"; 
\* $smtp_pass - Smtp User Login Password i.e $smtp_pass="password"; 
\* $from\_ - The mailaddress that sends i.e $from\_="info@yoursite.se"; 
\* $to\_ - The mailaddres to send to i.e $to\_="info@yoursite.se; 
\* 
\* ///////////////////////////////////////////////////////////////////////////// 

\*/ 

require("smtp.class.inc"); 

$smtp_server ="localhost"; 
$smtp_user ="info@yoursite.se"; 
$smtp_pass ="password"; 
$from\_ ="info@yoursite.se"; 
$to\_ ="info@yoursite.se"; 

$formblock=" 
\<form name=\\"news\\" action=\\"test4.php\\" method=\\"POST\\" \> 
\<table\> 
\<tr\> 
\<td\>\<input name=\\"from\\" type=\\"hidden\\" value=\\"$from\_\\"\>\</td\> 
\</tr\> 
\<tr\> 
\<td\>\<input name=\\"mailto\\" type=\\"hidden\\" value=\\"$to\_\\"\>  \* multiple names use comma as delimiter \</td\> 
\</tr\> 
\<tr\> 
\<td\>\<b\>CC:\</b\>\</td\> 
\<td\>\<input name=\\"cc\\" size=\\"60\\" maxlength=\\"120\\"\>  \* multiple names use comma as delimiter\<td\> 
\</tr\> 
\<tr\> 
\<td\>\<b\>BCC:\</b\>\</td\> 
\<td\>\<input name=\\"bcc\\" size=\\"60\\" maxlength=\\"120\\"\>  \* multiple names use comma as delimiter\<td\> 
\</tr\> 
\<tr\> 
\<td\>\<b\>Priority:\</b\>\</td\> 
\<td\>\<input type=\\"integer\\" name=\\"priority\\" size=\\"2\\" maxlength=\\"1\\" value=\\"3\\"\>   3 = default\</td\> 
\</tr\> 
\<tr\> 
\<td\>\<b\>Subject:\</b\>\</td\> 
\<td\>\<input name=\\"subject\\" size=\\"60\\" maxlength=\\"120\\"\>\</td\> 
\</tr\> 
\<tr\> 
\<td\>\<div\>\<b\>Message:\</b\>\</div\>\</td\> 
\<td\>\<textarea name=\\"message\\" cols=\\"80\\" rows=\\"40\\"\>\</textarea\>\</td\> 
\</tr\> 
\<tr\> 
\<td\>\<input type=\\"hidden\\" name=\\"op\\" value=\\"ds\\"\> \</td\> 
\</tr\> 
\<tr\> 
\<td\>\<input type=\\"submit\\" value=\\"Go !!!\\"\>\</td\> 
\<td\>\<input type=\\"reset\\" value=\\"Reset\\"\>\</td\> 
\</tr\> 
\</table\> 
\</form\>"; 

if ($\_POST\[op\] != "ds") 
{ 

echo "$formblock"; 

} 
else if ($\_POST\[op\] == "ds") 
{ 
$mail = new SMTP($smtp_server,$smtp_user,$smtp_pass); 

//////////////////////////////////////////////////////////////////////////////// 
// $gen_message_id="N"; if you set "N", the function make_header() don't generate a Message-ID: 
// $gen_message_id="Y" or default (20030329022154.c5ca786a8e569dd29ddf88e7c0cd0a4e.INFO@FYHR.SE) 

$header = $mail-\>make_header($\_POST\['from'\], $\_POST\['mailto'\], $\_POST\['subject'\], $\_POST\['priority'\], $\_POST\['cc'\], $\_POST\['bcc'\]); 

// Now you can make many more Header Options 
// !!! But don't forget " \\r\\n" at every line!!! 
// z.B. 
// PS: HTML Mail should going, too !! but i have never test it. 

$header .= "Reply-To: ".$\_POST\['from'\]." \\r\\n"; 
$header .= "Content-Type: text/plain; charset=\\"iso-8859-1\\" \\r\\n"; 
$header .= "Content-Transfer-Encoding: 8bit \\r\\n"; 
$header .= "MIME-Version: 1.0 \\r\\n"; 

//////////////////////////////////////////////////////////////////////////////// 

$error = $mail-\>smtp_send($from, $\_POST\['mailto'\], $header, $\_POST\['message'\], $\_POST\['cc'\], $\_POST\['bcc'\]); 

echo $error; 
} 

?\>

Permalänk: https://www.webforum.nu/p/1314042

## #5 — monAmour, 2004-04-04T13:30Z

Fint, sockets med andra ord :D

Permalänk: https://www.webforum.nu/p/1314051

---

Tråden på webben: https://www.webforum.nu/amne/php/100853-skicka-mail-via-smtp-server-med-pop-before-smtp-påslaget
