Beste mensen,

Ik gebruik onderstaande code om de mails in een mail_inbox te zetten in onze database.
Dat verloopt best prima alleen van sommige sites wil hij niet de normale mail adres halen maar komt het binnen onder name als: "[email protected]" <[email protected]>

Nu zou ik graag willen dat het binnenkomt als [email protected] en niet als "[email protected]" <[email protected]>

code:


$body_data = trim($email['htmlBody']) ==""?$email['plainBody']: $email['htmlBody']; 
		$waktu = date("Y-m-d H:i:s",$email['headers']->udate);
		$sql = "INSERT INTO `mail_inbox`( `subject`, `email_sender`, `name`, `is_register`, `email_receiver`, `data`, `times`,`web_id`,`vim`) VALUES (
		'".$db->escape_string($email['headers']->subject)."',
		'".$db->escape_string($from)."',
		'".$db->escape_string($email['headers']->fromaddress)."',
		'".$is_register."',
		'".$db->escape_string($to)."',
		'".$db->escape_string($body_data)."',
		'".$db->escape_string($waktu)."',".$sid.",".$vim.")";


Kan iemand helpen svp? Het gaat om het deel name waar dus "[email protected]" <[email protected]> opgeslagen gaat worden maar dat willen we graag als [email protected] zien komen.

Mijn dank is groot!
Kan je dat er niet af strippen dan? Zoiets (niet getest).

<?php

$from = '"[email protected]" <[email protected]>';

if (strpos($from, ' ')) {
$from = explode(' ', $from);
$from = $from[0];
$from = str_replace('"', '', $from);
}

echo $from;

?>

[size=xsmall]Toevoeging op 16/12/2020 17:45:20:[/size]

Zal ook vast via een regex kunnen, maar daar heb ik nu geen tijd voor ... ;)
Als ik bovenstaande code gebruik zie ik enkel een N verschijnen echter is het ook zo dat


$from = '"[email protected]" <[email protected]>';


niet gebruikt kan worden in mijn situatie aangezien het ook bijvoorbeeld van "[email protected]" <[email protected]> kan komen.

Nu had ik zelf even dit gebruikt


$tester = $db->escape_string($email['headers']->fromaddress);

		if (strpos($tester, ' ')) {
		$tester = explode(' ', $tester);
		$tester = $from[0];
		$tester = str_replace('"', '', $tester);
		}


En dan met:


$body_data = trim($email['htmlBody']) ==""?$email['plainBody']: $email['htmlBody'];
        $waktu = date("Y-m-d H:i:s",$email['headers']->udate);
        $sql = "INSERT INTO `mail_inbox`( `subject`, `email_sender`, `name`, `is_register`, `email_receiver`, `data`, `times`,`web_id`,`vim`) VALUES (
        '".$db->escape_string($email['headers']->subject)."',
        '".$db->escape_string($from)."',
        '".$db->escape_string($email['headers']->fromaddress)."',
        '".$is_register."',
        '".$db->escape_string($to)."',
        '".$db->escape_string($body_data)."',
        '".$db->escape_string($waktu)."',".$sid.",".$vim.")";


Ook dan krijg ik enkel een N te zien
$tester = $from[0];

moet zijn

$tester = $tester[0];

[size=xsmall]Toevoeging op 16/12/2020 17:55:39:[/size]

>> niet gebruikt kan worden in mijn situatie aangezien het ook bijvoorbeeld van "[email protected]" <[email protected]> kan komen.

daar houdt de code gewoon rekening mee ...
Yesss!!! nice, dit gedeelte hoe ik het nu heb werkt dus:


$tester = $email['headers']->fromaddress;

		if (strpos($tester, ' ')) {
		$tester = explode(' ', $tester);
		$tester = $tester[0];
		$tester = str_replace('"', '', $tester);
		
		
		$body_data = trim($email['htmlBody']) ==""?$email['plainBody']: $email['htmlBody']; 
		$waktu = date("Y-m-d H:i:s",$email['headers']->udate);
		$sql = "INSERT INTO `mail_inbox`( `subject`, `email_sender`, `name`, `is_register`, `email_receiver`, `data`, `times`,`web_id`,`vim`) VALUES (
		'".$db->escape_string($email['headers']->subject)."',
		'".$db->escape_string($from)."',
		'".$tester."',
		'".$is_register."',
		'".$db->escape_string($to)."',
		'".$db->escape_string($body_data)."',
		'".$db->escape_string($waktu)."',".$sid.",".$vim.")";
		
		echo "</br>".$sql;
		
		$db->query($sql);
	}


Nu de rest even uitvogelen voor mezelf hier :P Merci, mijn dank hiervoor is al groot!
Ook leuk:
<?php
$email = '"[email protected]" <[email protected]>';
if(strstr($email,'"')) $email = substr($email,strpos($email,'"')+1,strrpos($email,'"')-1);
?>
Graag gedaan ... let wel op. In jouw bovenstaand voorbeeld staat nu je overige code ook binnen de if-statement. Dat lijkt me niet de bedoeling. En die $tester moet dan $from worden.
Ozzie PHP op 16/12/2020 18:12:39

Graag gedaan ... let wel op. In jouw bovenstaand voorbeeld staat nu je overige code ook binnen de if-statement. Dat lijkt me niet de bedoeling. En die $tester moet dan $from worden.


Oke, aangepast en werkt dan ook goed.

Ik heb trouwens alles van from omgezet naar tester aangezien from al bestond en dat kan natuurlijk niet dubbel haha maar hij doet het nu goed opslaan in de database alleen nu is de vraag hoe kan het script nu automatisch terugmailen? want dat werkt nog niet.

 

mailTo($tester, $subject, $messagex, $meta, "inbox@".$metay['site_name'], $metay['site_name']." notification" );

Die zal ik ook zeker opslaan, thx voor de tip maar dat gedeelte werkt al haha het gaat nu nog puur dat het script ook moet mailen naar dat adres maar dat werkt nog niet
Wat werkt er niet aan? En op welke manier stuur je de mail weg? Via de mail() functie, of via een aparte weg via SMTP?

Reageren