Я могу отправлять электронные письма, но они, похоже, не получают CSS, даже если я добавил его в файл .php
, к которому я звоню, когда отправляю почту.Как добавить HTML, CSS и PHP в электронные письма с помощью PHPMailer?
Я установил $mail->isHTML(true);
, а HTML работает, а не CSS и PHP с использованием переменных.
Вот как это должно выглядеть (атм): http://imgur.com/a/SXUqs.
Это .php
файл я хочу отправить:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<style>
/*custom font*/
@import url('http://fonts.googleapis.com/css?family=Montserrat');
/* Basic Styles */
@import 'https://fonts.googleapis.com/css?family=Roboto:300,400,500';
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,300');
* { margin:0; padding:0; }
html { overflow:auto; height:100%; }
body { background-color: #e9ebee; margin:0; padding:0; font-size:10px; cursor:default; height:100%; }
body, html {font:13px 'open sans',sans-serif; overflow-x:hidden;}
/* Base Styles
********************************************************************* */
html {
font-size: 62.5%;
width: 100%;
height: 100%;
}
body {
background: #e9ebee;
height: 100%;
font-size: 1.5em;
line-height: 1.6;
font-family: 'Open Sans', Helvetica, Arial, sans-serif;
color: #222;
}
/*form styles*/
#msform {
min-width: 60%;
margin: 50px auto;
text-align: center;
position: relative;
}
#msform fieldset {
background: white;
border: 0 none;
border-radius: 3px;
box-shadow: 0 0 15px 1px rgba(0, 0, 0, 0.4);
padding: 20px 30px;
box-sizing: border-box;
margin: 0 10%;
/*stacking fieldsets above each other*/
position: relative;
}
/*Hide all except first fieldset*/
#msform fieldset:not(:first-of-type) {
display: none;
}
/*inputs*/
#msform input, #msform textarea {
padding: 15px;
border: 1px solid #ccc;
border-radius: 3px;
margin-bottom: 10px;
width: 100%;
box-sizing: border-box;
font-family: montserrat;
color: #2C3E50;
font-size: 13px;
outline: none;
}
#msform input:focus, #msform textarea:focus {
border:1px solid #2196F3;
}
/*buttons*/
#msform .action-button {
max-width: 40%;
width:100px;
background: #2196F3;
font-weight: bold;
color: white;
border: 0 none;
border-radius: 1px;
cursor: pointer;
padding: 10px 5px;
margin: 10px 5px;
}
#msform .action-button:hover, #msform .action-button:focus {
box-shadow: 0 0 0 2px white, 0 0 0 3px #2196F3;
}
/*headings*/
.fs-title {
font-size: 16px;
text-transform: uppercase;
color: #2196F3;
margin-bottom: 10px;
border-bottom:1px solid #475f93;
}
.fs-subtitle {
font-weight: normal;
font-size: 13px;
color: #2196F3;
margin-bottom: 20px;
}
/*progressbar*/
#progressbar {
margin-bottom: 30px;
overflow: hidden;
/*CSS counters to number the steps*/
counter-reset: step;
}
#progressbar li {
list-style-type: none;
color: #666;
text-transform: uppercase;
font-size: 9px;
width: 20%;
float: left;
position: relative;
}
#progressbar li:before {
content: counter(step);
counter-increment: step;
width: 20px;
line-height: 20px;
display: block;
font-size: 10px;
color: #333;
background: white;
border-radius: 3px;
margin: 0 auto 5px auto;
}
/*progressbar connectors*/
#progressbar li:after {
content: '';
width: 100%;
height: 2px;
background: white;
position: absolute;
left: -50%;
top: 9px;
z-index: -1; /*put it behind the numbers*/
}
#progressbar li:first-child:after {
/*connector not needed before the first step*/
content: none;
}
/*marking active/completed steps green*/
/*The number of the step and the connector before it = green*/
#progressbar li.active:before, #progressbar li.active:after{
background: #2196F3;
color: white;
}
</style>
<!-- multistep form -->
<form id='msform' action=' method='post'>
<!-- fieldsets -->
<fieldset>
<h2 class='fs-title'>Verify your account</h2>
<p>Hello <?php echo $_POST['username']; ?>.<br/>
You have recently signed up to our website at <?php echo $url; ?>, and
to be able to sign in you will have to verify your account by using the link bellow.<br />
<br />
<?php echo "<a href='".$url."/verify/".$verify_link."'>here</a>"; ?>
</p>
</fieldset>
</form>
</body>
</html>
Это файл PHPMailer я использую, чтобы отправить почту:
<?php
include $_SERVER["DOCUMENT_ROOT"] . '/assets/head.php';
$body = file_get_contents($_SERVER["DOCUMENT_ROOT"] . '../assets/php/mail/mail-body.php');
/**
* This example shows settings to use when sending via Google's Gmail servers.
*/
//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
date_default_timezone_set('Etc/UTC');
require $_SERVER["DOCUMENT_ROOT"] . '/assets/php/phpmailer/PHPMailerAutoload.php';
//Create a new PHPMailer instance
$mail = new PHPMailer;
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 465;
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'ssl';
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "username";
//Password to use for SMTP authentication
$mail->Password = "password";
//Set who the message is to be sent from
$mail->setFrom($domainemail, $url);
//Set an alternative reply-to address
$mail->addReplyTo($domainemail, $url);
//Set who the message is to be sent to
$mail->addAddress("toemail", "toname");
//Set the subject line
$mail->Subject = 'Verify your account';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
//$mail->msgHTML(file_get_contents(''), dirname(__FILE__));
//main body of the email
$mail->Body = $body;
//Replace the plain text body with one created manually
$mail->AltBody = 'If you can't view this email, please switch to a browser that support html emails';
//Attach an image file
//$mail->AddAttachment($body);
//allow html output
$mail->isHTML(true);
//send the message, check for errors
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
Я могу получить правильный $_POST['']
но ссылки будет отображаться linkname"; >
, фактически не являясь ссылкой.
в то время как эта проблема решена, с моей PHP ссылки, она, к сожалению, не решает проблему CSS: /, но по крайней мере одна проблема из пути, спасибо. –
Не используйте правила css в письмах, потому что не все клиенты электронной почты поддерживают их. Вместо этого используйте встроенные стили. – stweb
ooh, похоже, исправить все, спасибо –