?
Solved

Please help me with a Zend_Mail debugger class!

Posted on 2009-04-05
8
Medium Priority
?
848 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
Video: Liquid Web Managed WordPress Comparisons

If you run run a WordPress, you understand the potential headaches you may face when updating your plugins and themes. Do you choose to update on the fly and risk taking down your site; or do you set up a staging, keep it in sync with your live site and use that to test updates?

 
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

WordPress Tutorial 3: Plugins, Themes, and Widgets

The three most common changes you will make to your website involve the look (themes), the functionality (plugins), and modular elements (widgets).

In this article we will briefly define each again, and give you directions on how to install them.

Question has a verified solution.

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

Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this. Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it i…
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…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to dynamically set the form action using jQuery.
Suggested Courses

801 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