Solved

Please help me with a Zend_Mail debugger class!

Posted on 2009-04-05
8
828 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
  • 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
 
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
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
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

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Generating table dynamically is the most common issue faced by php developers.... So it seems there is a need of an article that explains the basic concept of generating tables dynamically. It just requires a basic knowledge of html and little maths…
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…
The viewer will learn how to dynamically set the form action using jQuery.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

746 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now