2012-04-10 4 views
0

Mit SMTP In PHP arbeitet Dies ist mein Code:HTML-Mail Nicht

<?php 

function smtp_mail($from, $to, $subject, $message, $headers="", $params=array()) { 
    $errno = ""; 
    $errstr = ""; 
    $smtpConnect = fsockopen("mail2.allramhosting.com", "25", $errno, $errstr, 20); 


    if (!empty($smtpConnect)) { 

     if ($params['use_html']) { 
      $extra_headers .= "MIME-Version: 1.0\nContent-Type: text/html; charset=\"utf-8\"\nContent-Transfer-Encoding: 7bit\n"; 
     } 
     $headers = "To: " . $to . "\nFrom: " . $from . "\nSubject: " . $subject . "\nDate: " . date('r') . "\n" . $extra_headers . $headers; 

     if (substr($headers, -1) == "\n") $headers = substr($headers, 0, -1); // Our last character should not be newline 

     //fputs($smtpConnect,"AUTH LOGIN" . $newLine); 
     //$smtpResponse = fgets($smtpConnect, 515); 
     //fputs($smtpConnect, base64_encode($username) . $newLine); 
     //$smtpResponse = fgets($smtpConnect, 515); 
     //fputs($smtpConnect, base64_encode($password) . $newLine); 
     //$smtpResponse = fgets($smtpConnect, 515); 
     fputs($smtpConnect, "HELO networkssms.com\r\n"); 
     fputs($smtpConnect, "MAIL FROM: " . $from . "\r\n"); 
     fputs($smtpConnect, "RCPT TO: " . $to . "\r\n"); 
     fputs($smtpConnect, "DATA\r\n"); 
     fputs($smtpConnect, $headers . "\r\n\r\n"); 
     fputs($smtpConnect, $message . "\r\n.\r\n"); // send message and finish 
     fputs($smtpConnect,"QUIT" . $newLine); 
     fclose($smtpConnect); 
     return true; 
    } 
    return false; 
} 




$params['use_html'] = "yes"; 

$user_subject = "Ticket - Budget Notification"; 
$user_part = '<html><body>'; 
$user_part .= '<div style="background-color: #EEEEEE;border-bottom: 1px solid #DCDCDC;padding: 10px 10px 20px;width: 500px; float:left;font-size:12px;font-weight:bold;">'; 
$user_part1 = '<div style="width:500px;">'; 
$user_part1 .= '<div style="width:500px;background-color:#eeeeee;padding: 10px 0 20px;border-bottom:1px solid #dcdcdc;">'; 
$user_part1 .= '<div style="float:left;width:150px;color:#666666;margin-left:20px;font-size:12px;font-weight:bold;">'; 
$user_part1 .= '</div></div>'; 
$user_part1 .= '<div style="width:450px;background-color:#eeeeee;padding: 10px 0 20px;border-bottom:1px solid #dcdcdc; height:auto; float:left;font-size:12px;margin-left:50px; font-weight:bold;">'; 
$user_part3 = '</div></div></div>'; 
$user_part3 .= '</body></html>'; 
$user_center_part1 = '';  
$user_center_part = 'The following Tickets are reached its budget ,'; 
$user_center_part2='<div style="float:left;width:auto;color:#000000;font-size:12px;margin-left:75px; font-weight:bold; height:auto; margin-top:10px;">Ticket #10 reached 100% of its budget</div>'; 
$user_to = '[email protected]'; 
$user_center_part1 = 'Dear Admin ,'; 
$user_message = $user_part.$user_center_part1.$user_part1.$user_center_part.$user_center_part2.$user_part3; 

if (!smtp_mail("[email protected]", $user_to, $user_subject, $user_message,"",$params)){ 
    mail($user_to, $user_subject, $user_subject . "\n" . substr($user_message, 0, 158), "From: [email protected]\nX-PHP-Script: 1"); 
    //mail("[email protected]", $user_subject, $user_message ,"From: [email protected]\nX-PHP-Script: 1"); 
} 


?> 

Ich erhalte keine E-Mails in meinem Konto. Wenn ich es als normale oder einfache Mail ohne HTML-Inhalt gebe, funktioniert es gut, aber es funktioniert nicht mit HTML-Inhalt.

+0

Sie auch HTML-Mails mit Mail() Funktion – Dion

+0

, aber ich muss mit smtp – Kichu

+0

chk senden können auszusenden sind Sie die E-Mail in Spam bekommen oder nicht ... die meiste Zeit HTML zwingen themails, um Spam-Ordner zu gehen .... –

Antwort

1

Anstatt eine eigene benutzerdefinierte komplexe Funktion zu verwenden, um eine HTML-E-Mail zu senden, empfehle ich Ihnen, eine gut getestete und dokumentierte Bibliothek wie SwiftMailer zu verwenden.

Es ist veryeasy zu verwenden. Für Ihr Beispiel in Ihrem Fall kann es sein:

$user_subject = "Ticket - Budget Notification"; 
/* ... */ 
$user_message = $user_part.$user_center_part1.$user_part1.$user_center_part.$user_center_part2.$user_part3; 

// then, send the mail 
require_once 'lib/swift_required.php'; 

// Create the Transport 
$transport = Swift_SmtpTransport::newInstance('mail2.allramhosting.com', 25); 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

// Create the message 
$message = Swift_Message::newInstance() 
    ->setSubject($user_subject) 
    ->setFrom('[email protected]') 
    ->setTo($user_to) 
    ->addPart($user_message, 'text/html'); 

// Send the message 
$result = $mailer->send($message);