Jazzy 1012
asked on
Send email everyday automatically
I created a table with this output
And more, I want it to be able to send an email daily with these reports but for it to be sent with the same CSS style it is displayed on the webpage. Any ideas on how I could send this email and without altering the physical display of it?
Im using PostgreSQL and the emails will be entered manual (since there more than one)
ID Rows Insurance
---- -------- --------------
123 2 AA,EE
345 1 YU
55 3 AA,EE,UY
And more, I want it to be able to send an email daily with these reports but for it to be sent with the same CSS style it is displayed on the webpage. Any ideas on how I could send this email and without altering the physical display of it?
Im using PostgreSQL and the emails will be entered manual (since there more than one)
There are PHP extensions for sending HTML emails, but browsers and email reader apps handle CSS very differently. You will have to re-create the styled table to suit the email reader application. It is very unlikely that an email reader will import an external stylesheet. Some email reader apps will strip out anything in the head element where most internal stylesheets are in web pages. There are a few that will retain and apply stylesheets within the body element. But the safest way to style an email is to use inline styles. This means that every element will need a style attribute with style parameters.
Your table does not appear to require sophisticated CSS styling. I would begin by sending a bare HTML table and see if it displays adequately in your email application. You obviously have a routine already set up to generate an HTML table for the web page. Use that routine to generate the message for the HTML email.
One popular PHP extension for sending HTML email is PEAR Mail_Mime. I've seen other experts recommend PHPMailer. The first step would be to determine if your server is already configured with one of these. If not, you'll need to load one.
Your table does not appear to require sophisticated CSS styling. I would begin by sending a bare HTML table and see if it displays adequately in your email application. You obviously have a routine already set up to generate an HTML table for the web page. Use that routine to generate the message for the HTML email.
One popular PHP extension for sending HTML email is PEAR Mail_Mime. I've seen other experts recommend PHPMailer. The first step would be to determine if your server is already configured with one of these. If not, you'll need to load one.
ASKER
Unfortunately I need to do the mailing procedure manually.
//if "email" variable is filled out, send email
if (isset($_REQUEST['email'])) {
//Email information
$admin_email = "jasmine@hotmail.com";
$email = "jasmine@hotmail.com";
$subject = 'Date';
//send email
mail($admin_email, "$subject", $comment, "From:" . $email);
I have added this before the content but it didnt work
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Its nothing that code wouldnt even work. I tried using this also but it wouldnt work:
$message being the whole content starting from the query
require "connection.php";
$to = "jasmine@hotmail.com";
$subject = "HTML email";
?>
<?php
$query= "SELECT client_id, count(client_id) AS rows, array_agg(insurance) AS insurance from vouchers WHERE parsing_date=CURRENT_DATE GROUP BY client_id";
$result = pg_query($conn,$query);
?>
$message= "
<!DOCTYPE html>
<html>
<head>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
<link href = "http://fonts.googleapis.com/css?family=Roboto:400">
<style>
.responstable {
margin: 1em 0;
width: 100%;
overflow: hidden;
background: #FFF;
color: #024457;
border-radius: 10px;
border: 1px solid #167F92;
word-wrap: break-word;
}
</style>
</head>
<body>
<div class="container-fluid">
<div>
<h1>Clients</h1>
</div>
<table class="responstable" rules='all' style='border-collapse: collapse;'>
<thead>
<tr>
<th>Client id</th>
<th>Number of rows</th>
<th>Insurance</th>
</tr>
</thead>
<?php
while($row = pg_fetch_array($result))
{
$find ='{';
$replace = '' ;
$arr = $row['insurance'];
$insurance3= str_replace($find,$replace,$arr);
$insurance = str_replace('"',' ',$insurance3);
?>
<tbody>
<td><?php echo $row['client_id']; ?></td>
<td><?php echo $row['rows'];?></td>
<td><?php echo $insurance; ?></td>
</tr>
<?php }
?> </tbody>
</table>
</div>
</body>
</html>
";
<?php
$headers = "HI";
mail($to,$subject,$message,$headers);
?>
$message being the whole content starting from the query
You keep opening and closing the PHP tag, therefore confusing yourself.
Since $message= " is declared outside the PHP tag, it's not known to PHP what it is.
Since $message= " is declared outside the PHP tag, it's not known to PHP what it is.
What happens if you enter this at the top of your PHP code?
mail("jasmine@hotmail.com","Test Message","This is a test","FROM: jasmine@hotmail.com");
Be sure to check your hotmail spam/junk folder.
ASKER
I dont recieve anything when I do that i checked everything
After that, you have to add a cronjob to mail it out every day. If you don't have access to a cronjob, you WILL have to do it manually.