Jak wysłać wiadomość e-mail w formacie HTML ze zdjęciami za pomocą PHP? Chcę mieć stronę z niektórymi ustawieniami i wyjściem HTML, które jest wysyłane pocztą e-mail na adres. Co powinienem zrobić? Głównym problemem jest dołączanie plików. Jak mogę to zrobić?Wysyłaj HTML w e-mailu przez PHP?
Odpowiedz
To jest dość proste, pozostawić obrazów na serwerze i wysłać PHP + CSS do nich ...
$to = '[email protected]';
$subject = 'Website Change Reqest';
$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$message = '<p><strong>This is strong text</strong> while this is not.</p>';
mail($to, $subject, $message, $headers);
Jest to wiersz, który opowiada przesyłkę i odbiorcę, że wiadomość e-mail zawierającą (oby) dobrze uformowane HTML, który będzie musiał zinterpretować:
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
Oto link dostałem info .. (link...)
Musisz bezpieczeństwo choć ...
co na temat formatowania css, obrazów i innych plików, takich jak js, których potrzebuje plik HTML? – Abadis
@UmerHayat zgodził się, ale wszyscy musieliśmy od czegoś zacząć, nawet jeśli uczymy się tylko od Google ... – Chris
@Abadis - CSS można zrobić w dowolny sposób, osadzić w pliku lub zewnętrznie jak zwykle z plikiem HTML . Obrazy można spakować myślami (nigdy tego nie zrobiłem) lub pozostawić na serwerze i połączyć z nimi. Wyszukaj obrazy HTML, jeśli nie masz pewności, jak działają: P – Chris
Najprostszym sposobem jest prawdopodobnie użycie Zend Framework lub innych frameworków takich jak CakePHP lub Symphony.
Można to również zrobić przy użyciu standardowej funkcji mail
, ale potrzebna jest nieco większa wiedza na temat dołączania zdjęć.
Alternatywnie wystarczy umieścić obrazy na serwerze, zamiast je dołączać. Wysyłanie wiadomości HTML jest udokumentowane w dokumentacji funkcji mail
.
Dodanie frameworka to przesada IMO :) – gonatee
@gonatee zależy od poziomu jakość, którą chcesz. Przyjęta odpowiedź nie będzie działać we wszystkich, oprócz najbardziej podstawowych przypadkach. Jeśli podstawowe sprawy są wszystkim, czego potrzebujesz, to używanie 'mail()' będzie w porządku. Jeśli potrzebujesz bardziej niezawodnego rozwiązania lub masz złożone sytuacje lub wymagania, prawdopodobnie powinieneś polegać na frameworku lub bibliotece, która już przechodziła przez dziesiątki dokumentów RFC i lata naprawiania błędów. Jeśli znajdziesz dedykowaną bibliotekę lub framework, który pozwala ci wybrać i wybrać pożądane funkcje, nie ma powodu, aby polegać na samodzielnym wyobrażaniu sobie tego. – Martijn
Musisz kodować swój html przy użyciu bezwzględnej ścieżki dla obrazów. Według ścieżki Absolute oznacza to, że musisz przesłać obrazy na serwer, a w atrybucie src
obrazów podać bezpośrednią ścieżkę, taką jak ta <img src="http://yourdomain.com/images/example.jpg">
.
Poniżej znajduje się kod PHP do refference: - Jest zrobione z http://www.php.net/manual/en/function.mail.php
<?php
// multiple recipients
$to = '[email protected]' . ', '; // note the comma
$to .= '[email protected]';
// subject
$subject = 'Birthday Reminders for August';
// message
$message = '
<p>Here are the birthdays upcoming in August!</p>
';
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
// Additional headers
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n";
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);
?>
Mam ten kod i będzie działać doskonale na moim miejscu
public function forgotpassword($pass,$name,$to)
{
$body ="<table width=100% border=0><tr><td>";
$body .= "<img width=200 src='";
$body .= $this->imageUrl();
$body .="'></img></td><td style=position:absolute;left:350;top:60;><h2><font color = #346699>PMS Pvt Ltd.</font><h2></td></tr>";
$body .='<tr><td colspan=2><br/><br/><br/><strong>Dear '.$name.',</strong></td></tr>';
$body .= '<tr><td colspan=2><br/><font size=3>As per Your request we send Your Password.</font><br/><br/>Password is : <b>'.$pass.'</b></td></tr>';
$body .= '<tr><td colspan=2><br/>If you have any questions, please feel free to contact us at:<br/><a href="mailto:[email protected]" target="_blank">[email protected]</a></td></tr>';
$body .= '<tr><td colspan=2><br/><br/>Best regards,<br>The PMS Team.</td></tr></table>';
$subject = "Forgot Password";
$this->sendmail($body,$to,$subject);
}
funkcja elektronicznej
function sendmail($body,$to,$subject)
{
//require_once 'init.php';
$from='[email protected]';
$headersfrom='';
$headersfrom .= 'MIME-Version: 1.0' . "\r\n";
$headersfrom .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headersfrom .= 'From: '.$from.' '. "\r\n";
mail($to,$subject,$body,$headersfrom);
}
Funkcja url obrazu jest używana, jeśli chcesz zmienić obraz, który masz ge w tylko jednej funkcji mam wiele funkcji poczty jak zapomniałem hasła utwórz użytkownika tam, gdzie używam funkcji URL obrazu możesz bezpośrednio ustawić ścieżkę.
function imageUrl()
{
return "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1)."images/capacity.jpg";
}
Dzięki, to było to, czego potrzebowałem – Abadis
@Jalpesh Czyli dla pliku CSS po prostu zrobiłbyś to samo? Odniesienie do absolutnej ścieżki i powinno działać, prawda? –
@FernandoSilva musisz ustawić absolutną ścieżkę, a także ustawić klasę lub identyfikator do elementu, więc na podstawie tego będziesz działał – Jalpesh
Zastosowanie PHPMailer,
Aby wysłać pocztę HTML trzeba ustawić $ mail-> isHtml() tylko, i można ustawić swoje ciało ze znacznikami HTML
Tutaj jest dobrze napisany poradnik :
rohitashv.wordpress.com/2013/01/19/how-to-send-mail-using-php/
Sztuką jest wiedzieć, identyfikator zawartości części MIME obrazu podczas budowy części ciała html. To sprowadza się do tworzenia znacznika img
https://github.com/horde/horde/blob/master/kronolith/lib/Kronolith.php
Spójrz na buildMimeMessage funkcyjnego dla przykładu roboczego.
Możesz łatwo wysłać wiadomość e-mail z zawartością HTML przez PHP. Użyj następującego skryptu.
<?php
$to = '[email protected]';
$subject = "Send HTML Email Using PHP";
$htmlContent = '
<html>
<body>
<h1>Send HTML Email Using PHP</h1>
<p>This is a HTMl email using PHP by CodexWorld</p>
</body>
</html>';
// Set content-type header for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// Additional headers
$headers .= 'From: CodexWorld<[email protected]>' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";
// Send email
if(mail($to,$subject,$htmlContent,$headers)):
$successMsg = 'Email has sent successfully.';
else:
$errorMsg = 'Email sending fail.';
endif;
?>
kod źródłowy i demo na żywo można znaleźć tutaj - Send Beautiful HTML Email using PHP
wysyłając e-mail html nie różni się zbytnio od normalnych wysyłania wiadomości e-mail za pomocą PHP. Co trzeba dodać, to rodzaj treści w parametrze nagłówka funkcji php mail(). Oto przykład.
<?php
$to = "[email protected]";
$subject = "HTML email";
$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>A table as email</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>Fname</td>
<td>Sname</td>
</tr>
</table>
</body>
</html>
";
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\b";
$headers .= 'From: name' . "\r\n";
mail($to,$subject,$message,$headers);
?>
Można również sprawdzić here dla bardziej szczegółowych wyjaśnień przez w3schools
jest Twój problem wysyłających 'kod HTML'? Lub wysyłając e-mail za pomocą PHP w ogóle? – Adi