Jag har kollat på sajten http://pear.php.net men kunde inte hitta en sådan Net-mapp där än. Var hittar man en sådan? Kanske de filer som jag har hämtat därifrån inte är kompletta. Var hittar jag de rätta filerna?
Problem med mailformulär
32 svar · 796 visningar · startad av addeweb · sida 2 av 2
Har nu hittat sidan http://pear.php.net/package/Net_SMTP
Får se om det hjälper...
Ah, nu fattar jag.
Mappen och filen det syftar på är C:/php4/Pear/Net/SMTP.php (din lokala sökväg)
Har själv aldrig använt något liknande skript så jag kan nog inte hjälpa dig så mycket.
Men testa att ändra sökvägen i smtp.php
Jag har inte kunnat se en sådan mapp där hemsidan finns. Har inte heller tillgång till andra mappar än den mapp som innehåller hemsidan. Kanske bäst att samla de filer som behövs i samma mapp som de sidor som jag håller på med.
Formuläret fungerar nu. Har också sett till att det finns en socket-fil tillsammans med de andra filerna.
Nu när formuläret funkar bra återstår nästa och sista problem
med det, nämligen att man ska ha möjlighet att markera en
checkbox för en kopia av mailet till egen adress när man skickar
mail till en mottagare. Det som inte funkar är att man inte får en
kopia av mailet som man har skickat. Kopian hamnar inte i den
egna brevlådan. Är det något som jag har missat och borde ta med?
Så här ser koden ut nedan nu:
<?php
require("Mail.php");
if((empty($_POST['subject'])) || (empty($_POST['message']))){
echo "<table width=\"100%\" border=\"0\" height=\"200\">";
echo "<tr><td align=\"center\" valign=\"top\"><br /><br /><br /><b>Både rubrik och meddelande ska fyllas i!</b>";
echo "<p><a href=\"javascript:history.back()\"><u>Tillbaka</u></a></p>";
echo "</td></tr></table>";
exit;
}else{
// Variabler som tar emot värden från kontaktformuläret.
// Mottagarens uppgifter - administratören
$fnamn = trim($_POST['fnamn']);
$enamn = trim($_POST['enamn']);
$anvnamn = trim($_POST['anvnamn']);
$toMail = trim($_POST['toMail']);
//echo "$fnamn $enamn $toMail ";
// Sändarens uppgifter
$fnamn2 = trim($_POST['fnamn2']);
$enamn2 = trim($_POST['enamn2']);
$fromMail = trim($_POST['fromMail']);
//echo "$fnamn2 $enamn2 $fromMail";
$subject = trim($_POST['subject']);
$body = trim($_POST['message']);
// $fil = $_POST['fil'];
$copy = $_POST['copy'];
//echo $copy;
// Kolla om användaren har markerat kopia till egen adress
if($_POST['copy'] == "Ja"){
$bcc_fromMail = $fromMail;
}
//echo $bcc_fromMail;
$recipients = $toMail;
$headers = array(
"To" => "$fnamn $enamn <$toMail>",
"From" => "$fnamn2 $enamn2 <$fromMail>",
"Reply-To" => "$fnamn2 $enamn2 <$fromMail>",
"Subject" => "$subject",
"Bcc" => "$bcc_fromMail"
);
$mail_params = array(
"host" => "din.smtp-server.nu",
"port" => 25,
"auth" => true,
"username" => "username",
"password" => "losen"
);
$mail =& Mail::factory("smtp", $mail_params);
$mail->send($recipients, $headers, $body);
echo "<table width=\"100%\" border=\"0\" height=\"200\">";
echo "<tr><td align=\"center\" valign=\"top\"><br /><br /><br /><b>Ditt meddelande har nu skickats iväg.</b>";
echo "<p><a href=\"javascript:history.back()\"><u>Tillbaka</u></a></p>";
echo "</td></tr></table>";
}?>
Jag har försökt med Bcc men tyvärr kom inte kopian fram till sändarens adress. Vad måste jag göra?
Sätts alla headers korrekt? Om du läser alla headers i mailet då det kommer fram så ser du om allt är som det ska. Sätts "\r\n" efter varje header? Om det är som det ska, skickas mailet genom en smpt som inte blir blockad för mottagaren?
Behöver man verkligen sätta in "\r\n" efter varje rad i arrayen? Nästan alla headers finns med i mailet när det kommer fram men inte bcc ännu.
addeweb skrev:
Behöver man verkligen sätta in "\r\n" efter varje rad i arrayen?
RFC2821 4.1.1 Command Semantics and Syntax skrev:
The SMTP commands define the mail transfer or the mail system function requested by the user. SMTP commands are character strings terminated by <CRLF>. The commands themselves are alphabetic characters terminated by <SP> if parameters follow and <CRLF> otherwise. (In the interest of improved interoperability, SMTP receivers are encouraged to tolerate trailing white space before the terminating <CRLF>.) [...]
RFC2821 4.1.1 Command Semantics and Syntax
addeweb skrev:
Nästan alla headers finns med i mailet när det kommer fram men inte bcc ännu.
RFC2821 APPENDICES B. Generating SMTP Commands from RFC 822 Headers skrev:
[...] 1. Each recipient address from a TO, CC, or BCC header field SHOULD be copied to a RCPT command (generating multiple message copies if that is required for queuing or delivery). This includes any addresses listed in a RFC 822 "group". [b]Any BCC fields SHOULD then be removed from the headers.[/b] Once this process is completed, the remaining headers SHOULD be checked to verify that at least one To:, Cc:, or Bcc: header remains. If none do, then a bcc: header with no additional information SHOULD be inserted as specified in [32]. [...]
RFC2821 APPENDICES B. Generating SMTP Commands from RFC 822 Headers
Tur är väl det!?
BCC = Blind Carbon Copy
CC = Carbon Copy
Hansen?
Jag har använt två egna olika adresser, den ena som sändaradress och den andra som mottagaradress. Problemet är att sändaradressen används som bcc-adress så att kopia kan skickas till sändarens adress.
Suck! Jag har kollat upp Bcc och Cc närmare och insett att det är etter krångligare än jag trodde. Finns det inte någon enklare lösning så att det fungerar ihop med den koden som jag har?
Sista problemet är nu löst. Har tagit bort bcc från formuläret.