I have 2 things I am trying to do here but I am miserably failing and I have tried everything so I don't know the reason.
I am trying to use str_replace to remove the copyright, but the copyright signature of the email is appearing.
For some reason, at random spots in the message, it's entering numbers. I am really confused why this is happening. Below is the PHP code and how the HTML output looks.
**** NEW Output:****
I added the qprint and now I get:
Output:
Code:
<?php
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'username#gmail.com';
$password = 'Password';
/* try to connect */
$inbox = imap_open($hostname, $username, $password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox, 'ALL');
/* if emails are returned, cycle through each... */
if ($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
/* for every email... */
foreach ($emails as $email_number) {
/* get information specific to this email */
$overview = imap_fetch_overview($inbox, $email_number, 0);
$message = imap_fetchbody($inbox, $email_number, 2);
$DateFormatted = str_replace("-0500", "", $overview[0] -> date);
/* output the email header information */
$output .= '<span class="msg_subject">' . $overview[0] -> subject . '</span> | ';
$output .= '<span class="msg_date"> ' . $DateFormatted . '</span><br />';
$bodyFormatted = str_replace("This e-mail (and attachment(s)) is confidential, proprietary, may be subject to copyright and legal privilege and no related rights are waived. If you are not the intended recipient or its agent, any review, dissemination, distribution or copying of this e-mail or any of its content is strictly prohibited and may be unlawful. All messages may be monitored as permitted by applicable law and regulations and our policies to protect our business. E-mails are not secure and you are deemed to have accepted any risk if you communicate with us by e-mail. If received in error, please notify us immediately and delete the e-mail (and any attachments) from any computer or any storage medium without printing a copy.
Ce courriel (ainsi que ses pièces jointes) est confidentiel, exclusif, et peut faire l’objet de droit d’auteur et de privilège juridique; aucun droit connexe n’est exclu. Si vous n’êtes pas le destinataire visé ou son représentant, toute étude, diffusion, transmission ou copie de ce courriel en tout ou en partie, est strictement interdite et peut être illégale. Tous les messages peuvent être surveillés, selon les lois et règlements applicables et les politiques de protection de notre entreprise. Les courriels ne sont pas sécurisés et vous êtes réputés avoir accepté tous les risques qui y sont liés si vous choisissez de communiquer avec nous par ce moyen. Si vous avez reçu ce message par erreur, veuillez nous en aviser immédiatement et supprimer ce courriel (ainsi que toutes ses pièces jointes) de tout ordinateur ou support de données sans en imprimer une copie.", "", $message);
/* output the email body */
$output .= '<span class="msg_body">' . $bodyFormatted . '</span><br /><br />';
}
echo $output;
}
/* close the connection */
imap_close($inbox);
?>
I don't know which format the email is coming across as, but it looks like you need to use imap_qprint($message); to get the message in the correct format, then do str_replace('©','',$bodyFormatted); because it should be in HTML.
The random numbers are from not using imap_qprint(). You have 8bit strings inside your message that need to be converted.
Here's the modified code:
/* get information specific to this email */
$overview = imap_fetch_overview($inbox, $email_number, 0);
$message = imap_fetchbody($inbox, $email_number, 2);
$message = imap_qprint($message);
$DateFormatted = str_replace("-0500", "", $overview[0] -> date);
/* output the email header information */
$output .= '<span class="msg_subject">' . $overview[0] -> subject . '</span> | ';
$output .= '<span class="msg_date"> ' . $DateFormatted . '</span><br />';
$string = "you should get the HTML and put it in there, I'm sure there are things like and other html chars that it's not finding";
$bodyFormatted = str_replace($string, "", $message);
/* output the email body */
$output .= '<span class="msg_body">' . $bodyFormatted . '</span><br /><br />';
Related
I've been trying to read a csv file and extract the first two columns and save it into another csv file.
The csv file is tab separated. The code is written do show it on the webpage but when it comes to writing the csv file. It prints on a new line which I don't want. Can anyone tell me what I'm doing wrong or what should I add to get the output in one line per row?
$string = <<<CSV
"IRC_01T_00K_002" "Bonjour monsieur, je m'appelle Léon Bop j'habite au Sénégal, j'ai 28ans. J'étais religieux moine bénédictin et je viens de quitter la vie religieuse il y a 2ans. J'ai fait l'hôtellerie comme la plonge, la sécurité et équipier de cuisine, actuellement je suis commerçant, et depuis quelques temps je cherche un correspondant canadien pour venir immigrer au Canada, puisque c'est mon pays de rêve.\
Voilà mes coordonnées:\
leonbop#gmail.com\
+221775797837." "Wrong Channel" "2018-10-26 13:57:16" "DE8B33B0-C68F-11E8-8BFB-0242AC110004" "2018-10-26 13:57:16" "DE8B33B0-C68F-11E8-8BFB-0242AC110004"
"IRC_01T_00K_002" "bonjour le Canadian immigration je suis au Congo je suis un chauffeur" "Wrong Channel" "2018-10-12 15:53:29" "DE8B33B0-C68F-11E8-8BFB-0242AC110004" "2018-10-12 15:53:29" "DE8B33B0-C68F-11E8-8BFB-0242AC110004"
"IRC_031_000_008" "Thnks so much. I will apply before her status expires. You guys are so helpful \
. I am lucky that I am in canada in people like you ." "Chat Conclusion" "2018-10-24 17:41:50" "380922FF-AB0E-11E8-80D2-0242AC110004" "2018-10-24 17:41:50" "380922FF-AB0E-11E8-80D2-0242AC110004"
"IRC_031_000_008" "Ok thanks a lot" "Chat Conclusion" "2018-10-19 04:19:35" "A4D460D3-F448-1693-BA91-C6A0A40998BB" "2018-10-19 04:19:35" "A4D460D3-F448-1693-BA91-C6A0A40998BB"
CSV;
//$string = str_replace(array('\\','/','\\\\','*','"','<','>','|',"'"), '', $string);
$fp=fopen('test13.csv','w');
$handle = fopen("data://text/plain," . $string, "r");
if ($handle) {
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE)
{
//$num = count($data);
for ($c=0; $c < 2; $c++)
{
echo $data[$c] . "<br />\n";
$data[$c] = str_replace(array('\\','/','\\\\','*','"','<','>','|',"'"), '', $data[$c]);
$data[$c] = preg_replace('/^\h*\v+/m', '', $data[$c]); // remove empty lines
$data[$c] = trim($data[$c]);
fwrite($fp,$data[$c]);
fwrite($fp,"\t");
//fwrite($fp, $data[$c]);
}
fwrite($fp,"\n");
}
fclose($fp);
fclose($handle);
}
Output:
IRC_01T_00K_002 Bonjour monsieur, je mappelle Léon Bop jhabite au Sénégal, jai 28ans. Jétais religieux moine bénédictin et je viens de quitter la vie religieuse il y a 2ans. Jai fait lhôtellerie comme la plonge, la sécurité et équipier de cuisine, actuellement je suis commerçant, et depuis quelques temps je cherche un correspondant canadien pour venir immigrer au Canada, puisque cest mon pays de rêve.
Voilà mes coordonnées:
leonbop#gmail.com
221775797837.
I expect the output to be: "first column" \t "second column". The new csv file created should have two columns and the second column value should be in one single line rather than multiple lines.
You have newlines in the second column of the CSV file. You can replace them with spaces:
data[$c] = str_replace("\n", " ", $data[$c]);
This question already has answers here:
Configure WAMP server to send email
(7 answers)
Closed 7 years ago.
I wanted to know if it was possible to test the sending of the confirmation email for a registration with this code :
$cle = md5(microtime(TRUE)*100000);
// Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
$stmt = $bdd->prepare("UPDATE personnes SET cle=:cle WHERE Pseudo = :pseudo");
$stmt->bindParam(':cle', $cle);
$stmt->bindParam(':pseudo', $pseudo);
$stmt->execute();
// Préparation du mail contenant le lien d'activation
$destinataire = $email;
$sujet = "Activer votre compte" ;
$entete = "From: inscription#votresite.com" ;
// Le lien d'activation est composé du login(log) et de la clé(cle)
// penser a changer l adresse du site lorsque celuici sera en ligne
$message = 'Bienvenue sur blablabla,
Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.
http://votresite.com/activation.php?log='.urlencode($pseudo).'&cle='.urlencode($cle).'
---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
when you work locally or does it absolutely have its online site
Thank you
First, install sendmail (tutorial on how to install is on their website) to be able to send e-mail from localhost
After this, you can check if mail was sent with simple "if" statement
if(mail($destinataire, $sujet, $message, $entete))
{
//sent
}else{
//not sent
}
On windows, You can try with Test Mail Server Tool
I can not run this script, I have every time two error messages can you help me
(!) Warning: DOMDocument :: loadHTML (): Empty string Supplied as
input in C: \ wamp \ www \ form \ formulaire.php on line 23
0.1442 2 142344 loadHTML () .. \ formulaire.php: 23 Notice (!): Undefined variable: description in C: \ wamp \ www \ form \
formulaire.php on line 57
<?php
//La page qu'on veut utiliser
$wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth';
//On initialise cURL
$ch = curl_init();
//On lui transmet la variable qui contient l'URL
curl_setopt($ch, CURLOPT_URL, $wikipediaURL);
//On lui demdande de nous retourner la page
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//On envoie un user-agent pour ne pas être considéré comme un bot malicieux
curl_setopt($ch, CURLOPT_USERAGENT, 'Le blog de Samy Dindane (www.dinduks.com');
//On exécute notre requête et met le résultat dans une variable
$resultat = curl_exec($ch);
//On ferme la connexion cURL
curl_close($ch);
//On crée un nouveau document DOMDocument
$wikipediaPage = new DOMDocument();
//On y charge le contenu qu'on a récupéré avec cURL
$wikipediaPage->loadHTML($resultat);
//On parcourt les balises <div>
foreach($wikipediaPage->getElementsByTagName('div') as $div){
//Si l'id de la page est bodyContent
if($div->getAttribute('id') == "bodyContent"){
//On met le contenu du premier <p> dans une variable
$premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue);
//Si le premier <p> est vide ou ne contient pas du texte
while($premierP == '<br>' || $premierP == '<br />' || $premierP == ''){
//On le supprime
$div->removeChild($div->getElementsByTagName('p')->item(0));
//Et on passe au <p> suivant
$premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue);
};
//Un joli try pour éviter les messages d'erreur
try{
//On parcourt toutes les tables
foreach( $div->getElementsByTagName('table') as $table ){
//Et on les supprime
$div->removeChild($table);
}
} catch(Exception $e){
//On censure :P
}
//On récupère le contenu de la fameuse balise <p> dans une variable
$description = '<p>' . $div->getElementsByTagName('p')->item(0)->nodeValue. '</p>';
}
}
//On enlève la syntaxe propre à Wikipedia
$description = preg_replace('/\[[0-9]*\][,]|\[[0-9]*\]/', '', $description);
//On affiche de résultat
echo $description;
?>
Hello I tackled too big so I gave up Thanks for your help
Check out Simple Html Dom. It really simplifies finding stuff in html files. Here is an example with your code.
<?php
include("simple_html_dom.php");
$wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth';
$html = file_get_html($wikipediaURL);
$description = '<p>' .$html->find('p', 0). '</p>';
$description = preg_replace('/\[[0-9]*\][,]|\[[0-9]*\]/', '', $description);
echo $description;
Simple Html Dom Documentation
Try this
$resultat = file_get_contents('http://fr.wikipedia.org/wiki/Megadeth');
I use LiipImagineBundle for re-size my image after upload. I have a error when I tried to upload some Jpeg about HTML encodage.
With jpeg form my camera that's work, but not form my phone camera.
What my browser show only js error and return blank page ?
I didn't understand what is that error.
Full message in french :
L'encodage de caractères du document HTML n'a pas été déclaré. Le document sera affiché avec des caractères incorrects pour certaines configurations de navigateur si le document contient des caractères en dehors de la plage US-ASCII. L'encodage de caractères de la page doit être
déclaré dans le document ou dans le protocole de transfert.
controller Symfony2
private function compressFile($file) {
$path = $file->getWebPath();
$absPath = $file->getAbsolutePath();
$tmpPath = $absPath."tmp";
$filter = "image";
$container = $this->container;
$dataManager = $container->get('liip_imagine.data.manager');
$filterManager = $container->get('liip_imagine.filter.manager');
try {
$image = $dataManager->find($filter, $path);
$response = $filterManager->applyFilter($image, $filter);
//$response = $filterManager->get($this->getRequest(), $filter, $image, $path);
$fileCompressed = $response->getContent();
}
catch (\Exception $e) {
return "error";
}
$f = fopen($tmpPath, 'w');
fwrite($f, $fileCompressed);
fclose($f);
unlink($absPath);
rename($tmpPath, $absPath);
return null;
}
I have found help to create my compress Function here.
I tried to catch some Exception but nothing work.
Someone have a solution ?
Sorry for my English, I am learning it...
It may be a little bit anoying but have you set default_charset to "UTF-8" in your php.ini ?
If you use Apache: Is (AddDefaultCharset UTF-8) present on your httpd.conf ?
In your view: is is présent on between your HTML Header.
Check the encoding of your editor to UTF-8 without BOM if it's not configured yet and save all file you have generated with that correct charset.
If not this may be the origin of that bad behavior.
Have a nice day.
Best Regards
In an e-commerce website for a company located in France we want to take payments through Mercanet (BNP Paribas). I downloaded API's for linux, it only contains two binary files (request, response) there are no PHP examples. No answer from helpdesk either. Also I downloaded the certificate for the website, but just stuck as there is no howto files.
TO anybody out there pulling their hair out with the ATOS / Mercanet / Sips payment system, below is an example of the PHP file they sent me.
All their help docs is in french.
It is important to note that there are 32 and 64 bit versions - you have to use correct one. I tried the tricks mentioned here
https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://www.developpez.net/forums/d599959/webmasters-developpement-web/general-conception-web/e-commerce/probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhj4iJ0kxEE9EoUbQTjq_0peu4_PSQ
FTP trick did not work.
https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://www.developpez.net/forums/d1154720/webmasters-developpement-web/general-conception-web/e-commerce/probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhiEypDQCmEu5uVWD5uDpOChAAaNbQ
32bit hack did not work
this give you pretty good instructions. translations looks good enough to make sense of it
https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://thierry-godin.developpez.com/php/atos/&usg=ALkJrhjC12cJksMlauYxLvwnoxPV0G__9g
the only thing that worked was having the correct version.
also remember if you using git, a push may reset permissions, then you have to 755 the request file everytime you push.
PHP example:
print ("<HTML><HEAD><TITLE>MERCANET - Paiement Securise sur Internet</TITLE></HEAD>");
print ("<BODY bgcolor=#ffffff>");
print ("<Font color=#000000>");
print ("<center><H1>Test de l'API plug-in MERCANET</H1></center><br><br>");
// Affectation des paramètres obligatoires
$parm="merchant_id=082584341411111";
$parm="$parm merchant_country=fr";
$parm="$parm amount=100";
$parm="$parm currency_code=978";
// Initialisation du chemin du fichier pathfile (à modifier)
// ex :
// -> Windows : $parm="$parm pathfile=c:/repertoire/pathfile";
// -> Unix : $parm="$parm pathfile=/home/repertoire/pathfile";
$parm="$parm pathfile=" . XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/param/pathfile';
// Si aucun transaction_id n'est affecté, request en génère
// un automatiquement à partir de heure/minutes/secondes
// Référez vous au Guide du Programmeur pour
// les réserves émises sur cette fonctionnalité
//
// $parm="$parm transaction_id=123456";
// Affectation dynamique des autres paramètres
// Les valeurs proposées ne sont que des exemples
// Les champs et leur utilisation sont expliqués dans le Dictionnaire des données
//
// $parm="$parm normal_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
// $parm="$parm cancel_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
// $parm="$parm automatic_response_url=http://www.maboutique.fr/cgi-bin/call_autoresponse.php";
// $parm="$parm language=fr";
// $parm="$parm payment_means=CB,2,VISA,2,MASTERCARD,2";
// $parm="$parm header_flag=no";
// $parm="$parm capture_day=";
// $parm="$parm capture_mode=";
// $parm="$parm bgcolor=";
// $parm="$parm block_align=";
// $parm="$parm block_order=";
// $parm="$parm textcolor=";
// $parm="$parm receipt_complement=";
// $parm="$parm caddie=mon_caddie";
// $parm="$parm customer_id=";
// $parm="$parm customer_email=";
// $parm="$parm customer_ip_address=";
// $parm="$parm data=";
// $parm="$parm return_context=";
// $parm="$parm target=";
// $parm="$parm order_id=";
// Les valeurs suivantes ne sont utilisables qu'en pré-production
// Elles nécessitent l'installation de vos fichiers sur le serveur de paiement
//
// $parm="$parm normal_return_logo=";
// $parm="$parm cancel_return_logo=";
// $parm="$parm submit_logo=";
// $parm="$parm logo_id=";
// $parm="$parm logo_id2=";
// $parm="$parm advert=";
// $parm="$parm background_id=";
// $parm="$parm templatefile=";
// insertion de la commande en base de données (optionnel)
// A développer en fonction de votre système d'information
// Initialisation du chemin de l'executable request (à modifier)
// ex :
// -> Windows : $path_bin = "c:/repertoire/bin/request";
// -> Unix : $path_bin = "/home/repertoire/bin/request";
//
$path_bin = XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/bin/static/request';
// Appel du binaire request
// La fonction escapeshellcmd() est incompatible avec certaines options avancées
// comme le paiement en plusieurs fois qui nécessite des caractères spéciaux
// dans le paramètre data de la requête de paiement.
// Dans ce cas particulier, il est préférable d.exécuter la fonction escapeshellcmd()
// sur chacun des paramètres que l.on veut passer à l.exécutable sauf sur le paramètre data.
$parm = escapeshellcmd($parm);
$result=exec("$path_bin $parm");
// sortie de la fonction : $result=!code!error!buffer!
// - code=0 : la fonction génère une page html contenue dans la variable buffer
// - code=-1 : La fonction retourne un message d'erreur dans la variable error
//On separe les differents champs et on les met dans une variable tableau
$tableau = explode ("!", "$result");
// récupération des paramètres
$code = $tableau[1];
$error = $tableau[2];
$message = $tableau[3];
// analyse du code retour
if (( $code == "" ) && ( $error == "" ) )
{
print ("<BR><CENTER>erreur appel request</CENTER><BR>");
print ("executable request non trouve $path_bin");
}
// Erreur, affiche le message d'erreur
else if ($code != 0){
print ("<center><b><h2>Erreur appel API de paiement.</h2></center></b>");
print ("<br><br><br>");
print (" message erreur : $error <br>");
}
// OK, affiche le formulaire HTML
else {
print ("<br><br>");
# OK, affichage du mode DEBUG si activé
print (" $error <br>");
print (" $message <br>");
}
print ("</BODY></HTML>");