Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Please help me with a Zend_Mail debugger class!

Posted on 2009-04-05
8
Medium Priority
?
862 Views
Last Modified: 2013-11-10
Usage:

<?

    require("classes/class.Zend_Mail_Debugger.php");

    $mail=new Zend_Mail();
   
    $mail->addTo("nisse@sweden.net");
    $mail->setFrom("me@hotletter.com");
    $mail->setSubject("testing testing");
    $mail->setBodyHtml('
                       
        Hej! Jag är ett brev på svenska!<br>
        <br>
        (I\'m a swedish letter)<br>
        <br>
        Regards<br>
        <a href="http://www.nisses.se">Nisses.se</a>
                       
    ');
   
   
    Zend_Mail_Debugger::DumpToScreen($mail);
   
   
?>


Problem: How to make the mail readable on screen?
(see picture)

<?php
 
class Zend_Mail_Debugger{
 
 
    static function DumpToScreen(Zend_Mail $zfMail){
        
        echo "<table class='zf_mail_debug' border='1'>";
        
            echo "<tr>";
 
                echo "<th>";
                    echo "To:";
                echo "</th>";
                
                echo "<td>";
                    foreach($zfMail->getRecipients() as $r){
                        echo "$r"."; ";
                    }
                echo "</td>";
                
            echo "</tr>";
 
            echo "<tr>";
                echo "<th>";
                    echo "From:";
                echo "</th>";
                
                echo "<td>";
                    echo $zfMail->getFrom();
                echo "</td>";
            echo "</tr>";
 
            echo "<tr>";
                echo "<th>";
                    echo "Subject:";
                echo "</th>";
                                
                echo "<td>";
                    echo $zfMail->getSubject();
                echo "</td>";
            echo "</tr>";    
 
            echo "<tr>";
                echo "<th>";
                    echo "Text:";
                echo "</th>";
                                
                echo "<td>";
                    if($zfMail->getBodyHtml()){
                        echo  $zfMail->getBodyHtml(true);
                    }
                    else{
                        echo $zfMail->getBodyText();
                    }
                echo "</td>";
            echo "<tr>";                
                                                                
        
        echo "</table>";
        
        
        
    }
    
}
 
?>

Open in new window

output.png
0
Comment
Question by:davidsperling
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
8 Comments
 
LVL 49

Expert Comment

by:Roonaan
ID: 24072104
What is the sense of making it readable to screen? If you want to debug the body text, than store your mail in a variable, then use setBodyText($variable):

<?php

    require("classes/class.Zend_Mail_Debugger.php");

    $mail=new Zend_Mail();
   
    $bodyHTML = '
                       
        Hej! Jag är ett brev på svenska!<br>
        <br>
        (I\'m a swedish letter)<br>
        <br>
        Regards<br>
        <a href="http://www.nisses.se">Nisses.se</a>
                       
    ';

    $mail->addTo("nisse@sweden.net");
    $mail->setFrom("me@hotletter.com");
    $mail->setSubject("testing testing");
    $mail->setBodyHtml($bodyHTML);
   
   
    echo '<blockquote>'.$bodyHTML.'</blockquote>';
?>
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24072845
The reason is that i'm using Zend_Mail like this :-)

One class for each kind of mail, that is.


http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/PHP_Frameworks/Q_24275092.html
0
 
LVL 49

Accepted Solution

by:
Roonaan earned 2000 total points
ID: 24074453
When you are extending the class, you could just as well use a variable, but then put it as a property of your custom object, and just write a getter;

class HT_Mail_Walk_Match_To_Proposer_Swe extends Zend_Mail{
 
        private $_customBodyText = '';
                        
        function __construct($toEmail,$toUsrName,$fromEmail,$mateAnonName,$dateTime,$link,$linkCapt){
 
                //SOLUTION:
                parent::__construct(); //set default encoding etc (iso 8859)
                
                $this->setSubject("Hej på dig!");
                $this->addTo($toEmail,$toUsrName);
                $this->setFrom($fromEmail);
 
                
                $d=new dsDate($dateTime,"swe");
                 
                $weekday=$d->getWeekDayString();
                $monthDay=$d->getCustomFormat("j");
                $month=$d->getCustomFormat("F");
                $time=$d->getTimeString_1();
                
                $this->_customBodyText = '<body>
            Hej '.$toUsrName.'!<br/>
            
            '.$mateAnonName.' secret... åla öl etc  '.$weekday.' '.$monthDay.'  '.$month.' kl. '.$time.'!<br/>
            
            
            Vänligen gå in på <a href="'.$link.'">'.$linkCapt.'</a> och tacka Ja eller Nej!<br/>
            
            
            Hälsningar<br/>
            '.$linkCapt.'<br/>
            
            </body>';
 
 
            $this->setBodyHtml($this->_customBodyText);
                
                
                
        }
        
        function getMyBodyText() {
          return $this->_customBodyText;
        }
    
    
}

Open in new window

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 4

Author Comment

by:davidsperling
ID: 24081070
Sweet, but then I can't dump just any Zend_Mail object to screen, can I?

There must be a way to decrypt those cryptig writings?
(se pic)
0
 
LVL 49

Expert Comment

by:Roonaan
ID: 24081154
You could do a forced download of a .eml file, but not sure what your browser thinks about that..
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24084556
So there's no function like html_entities_decode() for this kind of encoding?

=0D=0A =0D=0A Hello!...

What's this encoding called anyway
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24136022
The solution could maybe be found in Zend_Mime component...

(framework.zend.com)
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24239434
Possible solution
Zend_Mime component

(framework.zend.com)

 
Haven't had the time to test. Thank's for the workarounds!
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many old projects have bad code, but the budget doesn't exist to rewrite the codebase. You can update this code to be safer by introducing contemporary input validation, sanitation, and safer database queries.
Originally, this post was published on Monitis Blog, you can check it here . In business circles, we sometimes hear that today is the “age of the customer.” And so it is. Thanks to the enormous advances over the past few years in consumer techno…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
Suggested Courses

604 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question