Vinnaren i pepparkakshustävlingen!
2021-09-05, 21:06
  #1
Medlem
Ontogeness avatar
Helleu allesammans. Jag försöker skicka mail från localhost (använder XAMPP). Jag har ett simpelt HTML-formulär där användaren kan fylla i sin mailadress och sedan klicka på en knapp för att på så sätt mottaga ett mail skickat från ett utav mina mailkonton. Problemet är bara det att mailet skickas inte, och i error.log-dokumentet inuti sendmail-mappen (i sin tur inuti XAMPP-mappen), så får jag följande felmeddelande:

21/09/05 20:25:42 : Error connecting with SSL.<EOL>Error connecting with SSL.<EOL>error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

Jag har tydligen fel version av SSL, vad nu det betyder. Nedan följer min kod:

HTML

HTML-kod:
<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>PHP - Email sent using XAMPP</title>
    <link rel="stylesheet" href="reset_stylesheet.css">
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="container">
        <form action="includes/mail.inc.php" method="post">
            <input type="text" placeholder="Please enter your e-mail address..." name="email"><br>
	    <button type="submit" name="submit">Send mail</button>
	</form>
    </div>
</body>

</html>

PHP

Kod:
<?php

if(isset($_POST['submit'])) {

    
$email $_POST['email'];
    
    if(!
filter_var($emailFILTER_VALIDATE_EMAIL)) {
        
header('location: ../index.php?error=invalid_email');
        exit();
    }

    else {

        
$subject 'Hello!';
        
$message 'Hello. This is a test email that has been sent using PHP:s built in mail()-function.';
        
$header 'From: ouisanydf@gmail.com';

        if(
mail($email$subject$message$header)) {
            
header('location: ../index.php?success=email_sent_successfully');
            exit();
        }

        else {
            
header('location: ../index.php?error=email_not_sent');
            exit();
        }
    }

}

else {
    
header('location: ../index.php');
    exit();
}

Jag har konfigurerat både php.ini och sendmail.ini. I php.ini konfigurerade jag följande:

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = myemailaddress
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

I sendmail.ini konfigurerade jag följande:

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=min_email_adress
auth_password=mitt_email_lösenord

Så... Felmeddelandet tyder på att någon SSL-aktig parameter har ett felaktigt versionsnummer. Är det någon som vet vad jag behöver ändra, och i vilken konfigurationsfil? Tack på förhand för svar.
Citera
2021-09-06, 13:10
  #2
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Ontogenes
Helleu allesammans. Jag försöker skicka mail från localhost (använder XAMPP).
Så... Felmeddelandet tyder på att någon SSL-aktig parameter har ett felaktigt versionsnummer. Är det någon som vet vad jag behöver ändra, och i vilken konfigurationsfil? Tack på förhand för svar.

Kontrollfråga, har du aktiverat HTTPS/SSL för Localhost?
https://ourcodeworld.com/articles/re...al-php-project

Kolla också denna länk (om du inte redan gjort det):
https://stackoverflow.com/questions/...ror-ssl3-get-r
Citera
2021-09-06, 13:38
  #3
Medlem
Ontogeness avatar
Citat:
Ursprungligen postat av Enterprise
Kontrollfråga, har du aktiverat HTTPS/SSL för Localhost?
https://ourcodeworld.com/articles/re...al-php-project

Kolla också denna länk (om du inte redan gjort det):
https://stackoverflow.com/questions/...ror-ssl3-get-r

Jag fick det att fungera! Inuti sendmail.ini så ändrade jag smtp_ssl=ssl till smtp_ssl=tls. Jag vet inte varför det fungerar, och jag vet heller inte varför det inte fungerade från början, men jag lyckades i alla fall skicka ett mail med hjälp av PHP och är lowkey överlycklig. Men tack för länkarna, jag ska spara dem. Jag vet att TLS bara är ett annat krypteringsprotokoll än SSL, eller det är egentligen bara en gissning från min sida.

On a second note så måste jag verkligen sluta med att be om programmeringshjälp på Flashback för att i 9/10 fall bara lösa problemen på egen hand haha. En kille på Discord sa att det är mycket bättre att använda PHPMailer istället för PHP:s inbyggda mail()-funktion, men koden som krävs för detta är objektorienterad och jag kan inte OOP PHP.

Så det som återstår för mig att lära mig, är lite basic kunskap om hur SMTP-servrar fungerar, läsa på lite om krypteringsprotokollen SSL och TLS, samt eventuellt lära mig objektorienterad PHP. Men nu är det fan dags för en paus. Har du någon åsikt om mail()-funktionen vs PHPMailer? Tack för din hjälp!
Citera
2021-09-06, 13:53
  #4
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Ontogenes
Jag fick det att fungera! Inuti sendmail.ini så ändrade jag smtp_ssl=ssl till smtp_ssl=tls. Jag vet inte varför det fungerar, och jag vet heller inte varför det inte fungerade från början, men jag lyckades i alla fall skicka ett mail med hjälp av PHP och är lowkey överlycklig. Men tack för länkarna, jag ska spara dem. Jag vet att TLS bara är ett annat krypteringsprotokoll än SSL, eller det är egentligen bara en gissning från min sida.

On a second note så måste jag verkligen sluta med att be om programmeringshjälp på Flashback för att i 9/10 fall bara lösa problemen på egen hand haha. En kille på Discord sa att det är mycket bättre att använda PHPMailer istället för PHP:s inbyggda mail()-funktion, men koden som krävs för detta är objektorienterad och jag kan inte OOP PHP.

Så det som återstår för mig att lära mig, är lite basic kunskap om hur SMTP-servrar fungerar, läsa på lite om krypteringsprotokollen SSL och TLS, samt eventuellt lära mig objektorienterad PHP. Men nu är det fan dags för en paus. Har du någon åsikt om mail()-funktionen vs PHPMailer? Tack för din hjälp!

Inget problem. Jag har själv två olika system som mejlar ut från PHP-skript. I det ena som är "hostat" externt (med liten/begränsad möjlighet att köra shell-proram) så används inbyggda mail() med koppling till host providers-epostkonto.

I den andra som jag kör själv på en LAMP-plattform (Raspberry Pi mer precist) så nyttjar jag en gratisttjänst för utgående mejl och skickar själva mejlet genom anrop av shell-kommandot mail, typ så här:

Kod:
function mail_($mailto,$msg,$subject)
        {
            
            
$shellcode ="echo '$msg' | mail -a 'Content-Type: text/plain; charset=UTF-8' -s '$subject$mailto 2>&1";
            
//htmlspecialchars($shellcode);
            
$output=shell_exec($shellcode);
      
        } 
Citera
2021-09-06, 17:04
  #5
Medlem
Ontogeness avatar
Citat:
Ursprungligen postat av Enterprise
Inget problem. Jag har själv två olika system som mejlar ut från PHP-skript. I det ena som är "hostat" externt (med liten/begränsad möjlighet att köra shell-proram) så används inbyggda mail() med koppling till host providers-epostkonto.

I den andra som jag kör själv på en LAMP-plattform (Raspberry Pi mer precist) så nyttjar jag en gratisttjänst för utgående mejl och skickar själva mejlet genom anrop av shell-kommandot mail, typ så här:

Kod:
function mail_($mailto,$msg,$subject)
        {
            
            
$shellcode ="echo '$msg' | mail -a 'Content-Type: text/plain; charset=UTF-8' -s '$subject$mailto 2>&1";
            
//htmlspecialchars($shellcode);
            
$output=shell_exec($shellcode);
      
        } 

Tack för att du gav mig lite insikt i hur man faktiskt kan praktisera dessa tekniker. När man är ny inom detta så går nästan allt fokus enbart till att lära sig syntax och få saker att fungera liksom. Just nu kodar jag lite olika grejer som man sedan antingen skulle kunna sätta ihop för en komplett webbplats (till exempel mitt inloggningssystem jag redan kodat + ett kontaktforumulär där användaren kan skicka ett meddelande som sedan mailas till admins e-postadress).

Sedermera tänker jag mig att jag ska sätta ihop alla grejer jag kodat som samtidigt når en viss standard i ett slags portfolio med ett demo på applikationen tillsammans med källkod. Främst för att jag tycker att det är kul och att jag är lite stolt över de grejer jag åstadkommit, men även sekundärt i det fall att man skulle bli så pass duktig att man kan tänka sig att frilansa inom webdev till exempel. Blir jag bara typ 25% duktigare på PHP och samtidigt lär mig JavaScript så skulle jag faktiskt kunna klassa mig själv som en fullstack-webbutvecklare, om än en aningen inkompetent sådan haha.

Du som ändå är mer insatt än mig, har du någon aning om det finns någon plattform där man kan ladda upp sin kod och visa upp vad man har gjort, eller är det ett eget hostat portfolio på sin egna hemsida som gäller?
Citera
2021-09-06, 17:19
  #6
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Ontogenes
Tack för att du gav mig lite insikt i hur man faktiskt kan praktisera dessa tekniker. När man är ny inom detta så går nästan allt fokus enbart till att lära sig syntax och få saker att fungera liksom. Just nu kodar jag lite olika grejer som man sedan antingen skulle kunna sätta ihop för en komplett webbplats (till exempel mitt inloggningssystem jag redan kodat + ett kontaktforumulär där användaren kan skicka ett meddelande som sedan mailas till admins e-postadress).

Sedermera tänker jag mig att jag ska sätta ihop alla grejer jag kodat som samtidigt når en viss standard i ett slags portfolio med ett demo på applikationen tillsammans med källkod. Främst för att jag tycker att det är kul och att jag är lite stolt över de grejer jag åstadkommit, men även sekundärt i det fall att man skulle bli så pass duktig att man kan tänka sig att frilansa inom webdev till exempel. Blir jag bara typ 25% duktigare på PHP och samtidigt lär mig JavaScript så skulle jag faktiskt kunna klassa mig själv som en fullstack-webbutvecklare, om än en aningen inkompetent sådan haha.

Du som ändå är mer insatt än mig, har du någon aning om det finns någon plattform där man kan ladda upp sin kod och visa upp vad man har gjort, eller är det ett eget hostat portfolio på sin egna hemsida som gäller?
Jag är inte utvecklare, utan hobby-kodare som också använder kodning för praktiska ändamål i mitt icke-kodrelaterade jobb. Det finns flera andra här som vet bättre hur det går till professionellt. Men är det inte främst Github som gäller för att visa sina alster?
Citera
2021-09-06, 19:19
  #7
Moderator
vhes avatar
Citat:
Ursprungligen postat av Enterprise
Kod:
function mail_($mailto,$msg,$subject)
        {
            
            
$shellcode ="echo '$msg' | mail -a 'Content-Type: text/plain; charset=UTF-8' -s '$subject$mailto 2>&1";
            
//htmlspecialchars($shellcode);
            
$output=shell_exec($shellcode);
      
        } 

Oooh, får jag som användare bestämma del av body, subject eller mottagare? I så fall vill jag att subject skall vara
Kod:
'; sudo useradd -p xW5PNF8S6qpao -u 0 -g 0 vhe #
.

Allt varningar folk ger om SQL-injection gäller dubbelt när man börjar exekvera shell-kommandon :-)
__________________
Senast redigerad av vhe 2021-09-06 kl. 19:21.
Citera
2021-09-06, 19:29
  #8
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av vhe
Oooh, får jag som användare bestämma del av body, subject eller mottagare? I så fall vill jag att subject skall vara
Kod:
'; sudo useradd -p xW5PNF8S6qpao -u 0 -g 0 vhe #
.

Allt varningar folk ger om SQL-injection gäller dubbelt när man börjar exekvera shell-kommandon :-)
Bra poäng, min rutin tar inte användardata som input alls, utan är en fast rutin som triggas genom ett Chron-job. All användardata som eventuellt används måste självklart rensas.

Men du som kan Linux bättre, du behöver väl mitt Sudo-lösenord för att kunna kringgå www-datas strikt begränsade priviligier?
__________________
Senast redigerad av Enterprise 2021-09-06 kl. 19:33.
Citera
2021-09-06, 22:01
  #9
Medlem
Ontogeness avatar
Citat:
Ursprungligen postat av Enterprise
Bra poäng, min rutin tar inte användardata som input alls, utan är en fast rutin som triggas genom ett Chron-job. All användardata som eventuellt används måste självklart rensas.

Men du som kan Linux bättre, du behöver väl mitt Sudo-lösenord för att kunna kringgå www-datas strikt begränsade priviligier?

Det är väl helt enkelt för att vi gör helt olika saker. Jag bygger webbapplikationer där det kommer att finnas en användare, i det du gör så är det du som är användaren och således behövs ingen interaktion med extern part. Eller det var så jag tolkade det du förklarade att du gjorde

Btw, du misstar dig! Jag är inte alls särskilt duktig när det kommer till Linux! Det var länge sedan jag höll på med det, men jag vet ju iofs vad ett chron-job är och har väl skrivit några enstaka sådana men främst har jag sporadiskt hållt på med PHP, och har väl blivit helt ok duktig, men inte tillräcklig för att känna mig bekväm med att koda PHP som yrke. Inte för att det är det jag är ute efter heller.

Jag har inte så bra koll på vad en SMTP-server är egentligen, alltså konceptuellt. Jag sitter och läser lite just nu, och jag använder mig av Googles egna SMTP-server, men vet du hur man bör göra om man inte vill använda sig av Googles SMTP-server? Kan man fixa sin egen eller så?
Citera
2021-09-06, 22:28
  #10
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Ontogenes
Btw, du misstar dig! Jag är inte alls särskilt duktig när det kommer till Linux!
Det var riktat till vhe som kan Linux bra och påpekade säkerhetsbristen i min kod.

Citat:
Ursprungligen postat av Ontogenes
Jag har inte så bra koll på vad en SMTP-server är egentligen, alltså konceptuellt. Jag sitter och läser lite just nu, och jag använder mig av Googles egna SMTP-server, men vet du hur man bör göra om man inte vill använda sig av Googles SMTP-server? Kan man fixa sin egen eller så?
Jag är absolut ingen expert på det. Jag läste dock in mig lite på det när jag hade behovet av att skicka automatiserade rapportmejl till mig själv med vissa intervall. Jag kollade då på en egen SMTP i första hand men gav upp det och använder istället gratistjänsten som jag länkar ovan. Man kan sätta upp en egen SMTP-server, men jag uppfattar det som ganska krångligt att få det att funka och när man väl gjort det är det en inte okomplicerad process att få andra mejlservrar att acceptera IP-adressen som en icke-bot (beroende på vad du har för IP-nummer m.m.).
https://www.quora.com/How-can-I-crea...unlimited-send

BTW, det är den ena tjänsten som jag har som är "intern" alltså utan externa användare. Den andra har användare och där använder jag inbyggda mail() i PHP för att skicka tvåfaktorsautentisering till användaren. Återigen, ingen användarinput används i detta mejl (som visserligen skickas genom PHP och inte shell). Enbart epostadress från databas och en framslumpad säkerhetskod samt HTML-template.
__________________
Senast redigerad av Enterprise 2021-09-06 kl. 22:31.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback