Solved

Please help me with a Zend_Mail debugger class!

Posted on 2009-04-05
8
843 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 500 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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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

Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

Question has a verified solution.

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

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
These days socially coordinated efforts have turned into a critical requirement for enterprises.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to dynamically set the form action using jQuery.

688 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